2009-02-12 11 views
1

Salut J'utilise php et sql via odbc pour écrire un programme et j'ai abit coincé dans une partie où je veux afficher la date/heure actuelle au format date (' Ymd H: i: s) mais il affiche seulement le temps gmt. Je veux y ajouter 8 heures.Can aucun de vous ne peut m'aider.Merci beaucoupVoulez-vous afficher la date/l'heure actuelle

Répondre

2

Découvrez date_default_timezone_set. Vous pouvez faire quelque chose comme:

date_default_timezone_set('America/Los_Angeles'); 
print 'Current datetime is: ' . date('Y-m-d H:i:s'); 

Vous pouvez l'utiliser pour définir le fuseau horaire à tout fuseau horaire que vous avez besoin de temps pour être à, puis utiliser date normalement. Sinon, vous pouvez le faire, en utilisant strtotime:

print 'Current datetime is: ' date('Y-m-d H:i:s', strtotime('+8 hours')); 
+0

oui, mais cela ne affiche l'heure GMT le temps que je veux est 8 heures –

+0

plus vite vous pouvez Réglez le fuseau horaire à n'importe quel fuseau horaire et obtenez le bon moment. –

+0

Ou vous pouvez utiliser la deuxième méthode que j'ai mis à simplement ajouter 8 heures à l'heure actuelle. –

0

Si vous cherchez un moyen d'afficher un horodatage dans le temps local d'un utilisateur, vous pouvez utiliser JavaScript:

function showtime(t) 
{ 
    if (t == 0) 
    { 
     document.write("never"); 
     return; 
    } 

    var currentTime = new Date(t); 
    var month = currentTime.getMonth() + 1; 
    var day = currentTime.getDate(); 
    var year = currentTime.getFullYear(); 
    var hours = currentTime.getHours(); 
    var minutes = currentTime.getMinutes(); 
    var seconds = currentTime.getSeconds(); 
    document.write(); 
    if (minutes < 10){ 
    minutes = "0" + minutes; 
    } 
    if (seconds < 10){ 
    seconds = "0" + seconds; 
    } 
    document.write(month + "/" + day + "/" + year + "&nbsp;&nbsp;&nbsp;" + 
       hours + ":" + minutes + ":" + seconds + " "); 
    if(hours > 11){ 
    document.write("PM"); 
    } else { 
    document.write("AM"); 
    } 
} 

Ensuite, si vous besoin d'afficher un temps, juste faire un appel à elle dans le code HTML et raccordement de la valeur à partir de PHP:

<script type="text/javascript">showtime(<?=$time."000"?>)</script> 
0

Je dirigerait clairement la méthode de fuseau horaire.

Si j'ai bien compris, vous voulez ajouter du temps, donc le changer. Un exemple pourrait être, Une tâche a été créée MAINTENANT, et doit être complète dans 8 heures. La méthode timezone ne modifie que l'affichage de la date et de l'heure. Ne modifiez le paramètre de fuseau horaire que si vous connaissez le fuseau horaire de votre visiteur et que celui-ci doit être affiché par rapport à celui-ci.

Maintenant: 1234418228 est 2009/02/12 00:57:08 à Montréal ou 2009/02/11 09:57:08 à San Francisco. C'est exactement le même moment. Appeler à la première réponse, date() et strtotime() sont vos amis. Strtotime ("+8 heures", $ maintenant) $ maintenant être un horodatage de quand il est censé se rapporter à. Donc, si votre heure de début n'est pas time(), vous pouvez toujours l'utiliser. par exemple

strtotime("+8 hours", strtotime("2009/03/01 00:00:00"); (8AM on 2009/03/01) 

Cependant, lorsqu'ils traitent avec des intervalles comptés en semaines, ou moins, je préfère le faire « mathématiquement »

$StartTime = strtotime("2009/03/01 13:00:00"); 
$EndTime = $StartTime + (8 * 60 * 60); 
date("Y/m/d H:i:s", $EndTime) ==> "2009/03/01 21:00:00" 

3600 secondes dans une heure, 86400 en un jour.

Vous ne pouvez pas utiliser cette méthode pendant des mois, des trimestres ou des années, car le nombre de secondes varie d'une unité à l'autre.

0

Si vous souhaitez utiliser l'heure pour un certain fuseau horaire, il est préférable d'utiliser date_default_timezone_set(). de toute façon vous pouvez fournir la fonction date() à un autre parmateur: int timestamp. un entier représentant l'horodatage que vous souhaitez utiliser pour retourner les informations. donc si vous souhaitez afficher la date ('Ymd H: i: s) pour l'instant vous pouvez utiliser ceci:

$now = date('Y-m-d H:i:s', time()); // time() returns current timestamp. 
// if you omit the second parameter of date(), it will use current timestamp 
// by default. 
$_8hoursLater = date('Y-m-d H:i:s', time()+60*60*8); 
$_8hoursBefore = date('Y-m-d H:i:s', time()-60*60*8); 
Questions connexes