Funzione per verificare distanza di tempo non funziona: perchè?

Lighty

Nuovo Utente
2 Apr 2014
29
0
0
Salve a tutti!
Ultimamente ho sviluppato una funzione che dovrebbe, in base a un input dell'ora e del giorno passato, verificare se è passato meno di un determinato numero di minuti. In caso positivo mi viene restituito true, altrimenti false.
Perchè non funziona?
PHP:
<?php
$data = date('Y.m.d');
$ora = date('H.i.s');

function CalcolaTempo($data, $ora, $minuti){
	$data_presente =  date('Y.m.d');
	$ora_presente = date('H.i.s');
	$timestamp_presente = mktime(substr($ora_presente, 0, 2), substr($ora_presente, 3, 2), substr($ora_presente, 6, 2), substr($data_presente, 5, 2), substr($data_presente, 8, 2), substr($data_presente, 0, 4));
	$timestamp = mktime(substr($ora, 0, 2), substr($ora, 3, 2), substr($ora, 6, 2), substr($data, 5, 2), substr($data, 8, 2), substr($data, 0, 4));
	$result = $timestamp_presente - $timestamp;
	$seconds = $minutes * 60;
	if ($seconds >= $result){
		return true;
	} else {
		return false;}
}

?>
Ho tentato a fare la differenza tra due timestamp generati a pochi minuti di distanza (entrambi con impostazione di ora locale) per vedere come si comportano e tentare di riparare la funziona, ma il risultato è più di 4000! Perchè?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
prova a fare queste correzioni
PHP:
<?php
$data = date('Y.m.d');
$ora = date('H.i.s');

function CalcolaTempo($data, $ora, $minuti){
    //$data_presente =  date('Y.m.d');
    //$ora_presente = date('H.i.s');
    //$timestamp_presente = mktime(substr($ora_presente, 0, 2), substr($ora_presente, 3, 2), substr($ora_presente, 6, 2), substr($data_presente, 5, 2), substr($data_presente, 8, 2), substr($data_presente, 0, 4));
    $timestamp_presente = time();
	$timestamp = mktime(substr($ora, 0, 2), substr($ora, 3, 2), substr($ora, 6, 2), substr($data, 5, 2), substr($data, 8, 2), substr($data, 0, 4));
    $result = $timestamp_presente - $timestamp;
    //$seconds = $minutes * 60;//da dove salta fuori $minutes?
	$seconds = $minuti * 60;
    if ($seconds >= $result){
        return true;
    } else {
        return false;
	}
}
//....
?>
 

Lighty

Nuovo Utente
2 Apr 2014
29
0
0
Ciao Borgo Italia,
innanzitutto grazie per la risposta. Ho già provato con il metodo da te descritto ma non funziona neanche il quel modo: il risultato è uguale, anzi peggiore siccome le date che passo in input alla funzione sono con l'orario UTC+1, mentre il time() mi passa il timestamp con l'UTC.
Ad ogni modo, ho risolto in modo diverso.
Grazie comunque dell'aiuto!
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao, sarei curioso di vedere la tua soluzione, intanto ne posto una per PHP 5.3.0 o superiore
PHP:
<?php

$data = date("Y-m-d 06:00:00");

function CalcolaTempo($data) {

    $dta = new DateTime($data);
    $now = new DateTime(date("Y-m-d H:i:s"));
    $dif = $now->diff($dta);

    $min = $dif->i; // minuti
    $min += $dif->h * 60; // ore

    echo "Sono passati $min minuti";
}

CalcolaTempo($data);
Se necessita conteggiare anche i giorni basta aggiungere
PHP:
$min += $dif->d * 1440; // giorni
e cosi via anche per gli eventuali mesi o anni
 

Lighty

Nuovo Utente
2 Apr 2014
29
0
0
Ciao Criric,
semplicemente ho sostituito mktime() con strtotime() riconfigurando le date e le ore sostituendo ai puntini gli slash alle date e i due punti alle ore, per far capire a strtotime() quale è una data e quale un'ora.
Il resto... è uguale alla funzione di prima.
 
Discussioni simili
Autore Titolo Forum Risposte Data
borgo italia una funzione per verificare l'invio di files Snippet PHP 0
V [Visual Basic] Richiamare funzione su modulo per restituire list Visual Basic 0
C Creazione di una funzione per il filtraggio dei campi di un db Presentati al Forum 0
T [Javascript] funzione per attivare analytics... dov'è l'errore? Javascript 14
L [javascript]problema funzione per webapi Javascript 4
A Funzione javascript per effettuare la slide del carosello in avanti Javascript 0
trattorino [PHP] funzione per visualizzare solo carattere PHP 2
N funzione autoplay video per browser mobili come ios e android Javascript 0
neo996sps Logica per funzione preventivi: sono sulla strada giusta? PHP 4
S Utilizzare la funzione postmessage per fare un redirect Javascript 0
L Funzione per API HTML5 Javascript 0
neo996sps [PHP e funzioni con PDO] Funzione per generare corpo tabella PHP 1
M [Datetimepicker]Richiamare funzione per più id uguali jQuery 4
otto9due Funzione per ridimensionare div in base alla risoluzione schermo.. Javascript 5
G Funzione che resta in ascolto per una chiamata esterna Javascript 1
T [MYSQL] Richieste in Java per funzione Ajax MySQL 0
B Funzione per ottenere una determinata stringa PHP 4
ivarello Due Pulsanti con per lanciare funzione Javascript 0
Z MailChimp: funzione per invio coupon personalizzati ed unici Email Marketing 2
T Funzione per redirect versione mobile: escludere i tablet Javascript 1
N [risolto] Funzione per calcolo età PHP 4
L funzione per nascondere username PHP 5
A funzione per popolare un drop down list Javascript 4
A Funzione unica per prendere e recuperare valori Javascript 0
P Funzione truncate per testo Javascript 3
E ordinamento array multidimensionale per un valore ottenuto tramite una funzione PHP 1
A Funzione per modificare foto PHP 2
P funzione per safari PHP 0
L Funzione per le News "leggi tutto" PHP 32
Sevenjeak Aiuto miglioramento funzione per inserimento BBCode in textarea Javascript 1
D Problema con funzione preg_match() per controllo email PHP 2
L Funzione per inserire solo testo PHP 13
H Funzione onmouseover per mostrare un box con un link da cliccare? Javascript 3
G Funzione per spedire email a destinatari diversi PHP 0
Monital Modificare una funzione per creazione tabella html PHP 15
L funzione per ruoli.. PHP 11
G funzione javascript per passaggio valori Javascript 1
emanuelevt funzione per entità html e classe PHP 1
asevenx problema con funzione per far apparire e scomparire un form di commenti PHP 1
M jQuery: funzione substr o substring per tagliare un testo? jQuery 1
M JavaScript: lanciare funzione ASP per salvare dati in database Javascript 0
J Funzione RICERCA per rubrica telefonica PHP 1
P SCript per la funzione condividi Ajax 1
T funzione cerca per il mio sito PHP 4
G Errore funzione per form PHP 2
O problemi con funzione per stampare tendina per data PHP 6
V [JQuery] Aiuto per funzione Ajax jQuery 0
P Funzione "http_build_query" per PHP4 PHP 0
G [javascript]Chiamare funzione javascript per menù Javascript 2
SolidSnake4 funzione mkdir per creare una directory PHP 1

Discussioni simili