Avatar billede TiHs Nybegynder
02. december 2004 - 17:43 Der er 20 kommentarer og
1 løsning

Skrive dato og tid i PHP

Jeg har en hjemmeside hvor jeg viser dato og tid for indlæg. Den giver dog en 9timers forskel fra den rigtige tid. Den er skrevet sådan her lige nu:

$Today         = (date ("d-m-y ( h:i:s  A)"));

Hvad kan jeg gøre for at få den til at skrive den korrekte tid ?
Avatar billede bromer Nybegynder
02. december 2004 - 17:45 #1
Er tidszonen på serveren sat korrekt
Avatar billede baitianlong Nybegynder
02. december 2004 - 18:02 #2
Måske står serveren i en anden tidszone f.eks californien ?! :P

Ellers kan du måske bruge:

$timer = date("h")-9;
if($timer < 0) $timer += 12;
Avatar billede TiHs Nybegynder
02. december 2004 - 18:21 #3
ja, den står ikke i denne tidszone ...
Men hvordan skal jeg skrive det så da det SKAL henvises til som $Today der hvor tiden skal være ....

...altså hvor i koden skal jeg skrive det ???
Avatar billede baitianlong Nybegynder
02. december 2004 - 18:31 #4
02-12-04 ( 06:25:22 PM)

$dato = date("d-m-y");
$minsek = date("i:s");
$ampm = date("A");
$timer = date("h")-9;
if($timer < 0) $timer += 12;

$Today = $dato." ( ".$timer.":".$minsek." ".$ampm.")";

Så er der dog lige AMPM fætteren. Den vil jo ikke være korrekt altid. Så den skal vi selv regne ud.

$timer2 = date("H")-9;
if($timer2 < 0) $timer += 24;
$ampm = $timer2 < 12 ? "AM" : "PM";

samlet:

$dato = date("d-m-y");
$minsek = date("i:s");
$timer2 = date("H")-9;
if($timer2 < 0) $timer += 24;
$ampm = $timer2 < 12 ? "AM" : "PM";
$timer = date("h")-9;
if($timer < 0) $timer += 12;

$Today = $dato." ( ".$timer.":".$minsek." ".$ampm.")";

Så skulle den gerne være der :)
Avatar billede TiHs Nybegynder
02. december 2004 - 18:49 #5
Det hjælper da og ændrer tiden ... men den siger nu
(0:45:20)AM
Avatar billede dennismp Nybegynder
02. december 2004 - 19:04 #6
Virker dette?

putenv("TZ=CET");
echo date ("d-m-y ( h:i:s  A)");
Avatar billede TiHs Nybegynder
02. december 2004 - 19:42 #7
hvor vil du have jeg skal sætte det ind i ovenstående kode ? ... for det kører jo næsten rigtigt det du skrev først ...
Avatar billede TiHs Nybegynder
02. december 2004 - 19:45 #8
... og ja, jeg er heeeelt ny i PHP *gg*
Avatar billede morteeart Nybegynder
02. december 2004 - 19:48 #9
Synes lige at disse 2 link mangler i dette her spøgsmål.

www.php.net/time
www.php.net/date
Avatar billede dennismp Nybegynder
02. december 2004 - 19:48 #10
Er det mig du skriver til? I så fald, skal du blot prøve at sætte putenv("TZ=CET"); ind før, du bruger date funktionen.
Avatar billede baitianlong Nybegynder
02. december 2004 - 19:54 #11
Hvad siger min funktion nu ? Den burde sige 02-12-04 ( 19:53:22 PM)

(hvis dennismp's virker er den naturligvis smartere)
Avatar billede dennismp Nybegynder
02. december 2004 - 19:58 #12
Man kunne nok også gøre det i en .htaccess (hvis man har lov og hvis det er en apache server :) ). Hvis det ligges i top-dir'et for din hjemmeside, så slipper du for at rette i koden.

SetEnv TZ CET
Avatar billede TiHs Nybegynder
02. december 2004 - 20:06 #13
Dennis: når jeg prøver med kun
$Today        =      putenv("TZ=CET");
                      date ("d-m-y ( h:i:s  A)"));

Siger den ikke andet end dato: 1

legende.dk: Den siger som jeg skrev før .... (02:05:10)AM med koden

$dato = date("d-m-y");
$minsek = date("i:s");
$timer2 = date("H")-9;
if($timer2 < 0) $timer += 24;
$ampm = $timer2 < 12 ? "AM" : "PM";
$timer = date("h")-9;
if($timer < 0) $timer += 12;

$Today = $dato." ( ".$timer.":".$minsek." ".$ampm.")";
Avatar billede dennismp Nybegynder
02. december 2004 - 20:11 #14
prøv istedet

putenv("TZ=CET");
$Today = date ("d-m-y ( h:i:s  A)"));
Avatar billede TiHs Nybegynder
02. december 2004 - 20:18 #15
Så vil den slet ikke skrive noget dennismp ....
Her er hele min php-fil:


************************************
<?php

$Submit     = $_POST["Submit"];
$Name         = $_POST["Name"];
$Email         = $_POST["Email"];
$Comments     = $_POST["Comments"];
$NumLow     = $_REQUEST["NumLow"];
$NumHigh     = $_REQUEST["NumHigh"];

$Name         = stripslashes($Name);
$Email         = stripslashes($Email);
$Comments     = stripslashes($Comments);

// ###################################################################################
// ########## Reading and Writing the new data to the GuestBook Database #############

if ($Submit == "Yes") {

    $filename     = "GuestBook.txt";


    $fp         = fopen( $filename,"r");
    $OldData     = fread($fp, 80000);
    fclose( $fp );

// Gets the current Date of when the entry was submitted


putenv("TZ=CET");
$Today = date ("d-m-y ( h:i:s  A)"));


// Puts the recently added data into html format that can be read into the Flash Movie.
// You can change this up and add additional html formating to this area.  For a complete listing of all html tags
// you can use in flash - visit: http://www.macromedia.com/support/flash/ts/documents/htmltext.htm

    $Input = "Name: <b>$Name</b><br>Email: <b><u><a href=\"mailto:$Email\">$Email</a></u></b><br>Comments: <b>$Comments</b><br><i><font size=\"-1\">Dato: $Today</font><br><br>.:::.";

/* This Line adds the '&GuestBook=' part to the front of the data that is stored in the text file.  This is important because without this the Flash movie would not be able to assign the variable 'GuestBook' to the value that is located in this text file  */

    $New = "$Input$OldData";


    $fp = fopen( $filename,"w");
    if(!$fp) die("&GuestBook=cannot write $filename ......&");
    fwrite($fp, $New, 800000);
    fclose( $fp );
}

// ###################################################################################
// ######### Formatting and Printing the Data from the Guestbook to the Flash Movie ##



    $filename = "GuestBook.txt";


    $fp     = fopen( $filename,"r");
    $Data     = fread($fp, 800000);
    fclose( $fp );

    $DataArray = split (".:::.", $Data);

    $NumEntries = count($DataArray) - 1;

    print "&TotalEntries=$NumEntries&NumLow=$NumLow&NumHigh=$NumHigh&GuestBook=";
    for ($n = $NumLow; $n < $NumHigh; $n++) {
    print $DataArray[$n];
        if (!$DataArray[$n]) {
            Print "<br><br><b>No More entries</b>";
        exit;
        }
    }
?>
****************************************
Avatar billede dennismp Nybegynder
02. december 2004 - 20:25 #16
Får du ikke en syntaksfejl? Der er en ) for meget.


Prøv at lave følgende i en ny fil (For at se om det overhovedet virker)
<?php
print date ("d-m-y ( h:i:s  A)");
putenv("TZ=CET");
print date ("d-m-y ( h:i:s  A)");
?>

Hvis ikke, så prøv

print date ("d-m-y ( h:i:s  A)", time() - 9*3600); // træk 9 timer fra..

.. tror bare den sidste giver problemer med vinter/sommertid.
Avatar billede TiHs Nybegynder
02. december 2004 - 20:35 #17
Nu står der sku 08:34:16PM ...
Niceeeeee ... tak for det dennismp ... det var bare ')' for meget ... så din lille med vigtige kode virkede .... takker ....
Avatar billede TiHs Nybegynder
02. december 2004 - 20:36 #18
og ellers tak for hjælpen legende.dk ...
Avatar billede dennismp Nybegynder
02. december 2004 - 20:43 #19
Herligt :)
Avatar billede baitianlong Nybegynder
02. december 2004 - 20:46 #20
ok, fint at du fik det til at virke... Jeg ved ikke hvorfor min version var lidt underlig. Den viser til gengæld tiden på Månen rimeligt præcist :P
Avatar billede TiHs Nybegynder
02. december 2004 - 20:48 #21
hehe .... right on legende ... :o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester