Czas upłynąłby na twoim serwerze. Łatwym obejściem tego problemu jest ręczne ustawienie strefy czasowej za pomocą date_default_timezone_setprzed wywołaniem funkcji date()lub time().
Jestem w Melbourne, Australia , więc mam coś takiego:
@AyexeM Prostszą i bardziej poprawną odpowiedzią nie byłoby pominięcie potencjalnie ważnych i powiązanych informacji, ale udzielenie odpowiedzi na pytanie, jak sugerujesz, ale podanie dodatkowych informacji o strefach czasowych poniżej. Nie ma potrzeby pomijania potencjalnie ważnych informacji tylko dlatego, że nie zostały o to poproszone.
Jamie
524
// Simply:
$date = date('Y-m-d H:i:s');// Or:
$date = date('Y/m/d H:i:s');// This would return the date in the following formats respectively:
$date ='2012-03-06 17:33:07';// Or
$date ='2012/03/06 17:33:07';/**
* This time is based on the default server time zone.
* If you want the date in a different time zone,
* say if you come from Nairobi, Kenya like I do, you can set
* the time zone to Nairobi as shown below.
*/
date_default_timezone_set('Africa/Nairobi');// Then call the date functions
$date = date('Y-m-d H:i:s');// Or
$date = date('Y/m/d H:i:s');// date_default_timezone_set() function is however// supported by PHP version 5.1.0 or above.
Aby uzyskać informacje o strefie czasowej, zobacz Lista obsługiwanych stref czasowych .
Jest to odpowiedź o wiele bardziej bezpośrednia niż pierwsza. Dzięki!
dev_willis,
1
Dziękuję za link obsługiwanych stref czasowych, miałem google go :)
htafoya
190
Ponieważ PHP 5.2.0możesz użyć tej DateTime()klasy:
use \Datetime;
$now =newDateTime();
echo $now->format('Y-m-d H:i:s');// MySQL datetime format
echo $now->getTimestamp();// Unix Timestamp -- Since PHP 5.3
I aby określić timezone:
$now =newDateTime(null,newDateTimeZone('America/New_York'));
$now->setTimezone(newDateTimeZone('Europe/London'));// Another way
echo $now->getTimezone();
to dobra odpowiedź, ale zapomniałeś powiedzieć, że musimy użyć \ Datetime przed wywołaniem :) ty
Amor.o
@ Amor.o Dziękuję za heads-up, zaktualizowałem odpowiedź już teraz - choć trochę późno i szczerze mówiąc nie pamiętam otrzymania powiadomienia o komentarzu. Odnośnie użycia Datatimeprzestrzeni nazw; Nie pamiętam, czy tak było w 2013 roku i od lat nie napisałem żadnego kodu PHP. Niezależnie od tego Twoja sugestia wydaje się poprawna, więc jeszcze raz dziękuję.
Może to być bardziej niezawodne niż zwykłe dodawanie lub odejmowanie liczby sekund w ciągu dnia lub miesiąca od znacznika czasu ze względu na czas letni.
Kod PHP
// Assuming today is March 10th, 2001, 5:16:18 pm, and that we are in the// Mountain Standard Time (MST) Time Zone
$today = date("F j, Y, g:i a");// March 10, 2001, 5:16 pm
$today = date("m.d.y");// 03.10.01
$today = date("j, n, Y");// 10, 3, 2001
$today = date("Ymd");// 20010310
$today = date('h-i-s, j-m-y, it is w Day');// 05-16-18, 10-03-01, 1631 1618 6 Satpm01
$today = date('\i\t \i\s \t\h\e jS \d\a\y.');// it is the 10th day.
$today = date("D M j G:i:s T Y");// Sat Mar 10 17:16:18 MST 2001
$today = date('H:m:s \m \i\s\ \m\o\n\t\h');// 17:03:18 m is month
$today = date("H:i:s");// 17:16:18
$today = date("Y-m-d H:i:s");// 2001-03-10 17:16:18 (the MySQL DATETIME format)
Warto zauważyć, że znacznik czasu zwracany przez time()funkcję jest niezależny od strefy czasowej. (Tak więc date_default_timezone_set("your-particular-timezone");wcześniejsze wywołanie nie przyniesie żadnego efektu).
zakaz geoinżynierii
@ ban-geoinżynieria - nie jestem pewien, co rozumiesz przez „niezależny od strefy czasowej”; jest „zależny” od strefy czasowej, na której ustawiony jest serwer? Możesz ustawić serwer na wschodnim wybrzeżu ustawiony na strefę czasową na zachodnim wybrzeżu lub odwrotnie.
Neal Davis
56
Możesz użyć zarówno $_SERVER['REQUEST_TIME']zmiennej, jak i time()funkcji. Oba zwracają znacznik czasu Unix.
Przez większość czasu te dwa rozwiązania dają dokładnie taki sam uniksowy znacznik czasu . Różnica między nimi polega na tym, że $_SERVER['REQUEST_TIME']zwraca znacznik czasu ostatniego żądania serwera i time()zwraca bieżącą godzinę. Może to powodować niewielkie różnice w dokładności w zależności od aplikacji, ale w większości przypadków oba te rozwiązania powinny wystarczyć.
W oparciu o powyższy przykładowy kod będziesz chciał sformatować te informacje po uzyskaniu uniksowego znacznika czasu . Niesformatowany czas uniksowy wygląda następująco:1232659628
Aby więc uzyskać coś, co zadziała, możesz użyć date()funkcji do sformatowania tego.
Dobre informacje na temat sposobów korzystania z date()funkcji znajdują się w podręczniku PHP .
Na przykład poniższy kod zwraca datę, która wygląda następująco 01/22/2009 04:35:00 pm:
Zwraca ciąg sformatowany zgodnie z podanym ciągiem formatu przy użyciu podanego znacznika czasu liczby całkowitej lub bieżącego czasu, jeśli nie podano znacznika czasu.
Przykłady:
$today = date("F j, Y, g:i a");// March 10, 2001, 5:16 pm
$today = date("m.d.y");// 03.10.01
$today = date("j, n, Y");// 10, 3, 2001
$today = date("Ymd");// 20010310
$today = date('h-i-s, j-m-y, it is w Day');// 05-16-18, 10-03-01, 1631 1618 6 Satpm01
$today = date('\i\t \i\s \t\h\e jS \d\a\y.');// it is the 10th day.
$today = date("D M j G:i:s T Y");// Sat Mar 10 17:16:18 MST 2001
$today = date('H:m:s \m \i\s\ \m\o\n\t\h');// 17:03:18 m is month
$today = date("H:i:s");// 17:16:18
$today = date("Y-m-d H:i:s");// 2001-03-10 17:16:18 (the MySQL DATETIME format)
Nowy programista PHP może pomylić, dlaczego istnieje wiele metod uzyskiwania bieżącej daty i godziny oraz których można użyć w ich projekcie.
1. datemetoda (PHP 4, PHP 5, PHP 7)
Jest to bardzo powszechny i najłatwiejszy sposób na uzyskanie daty i godziny w php.
// set the default timezone to use. Available since PHP 5.1
date_default_timezone_set('UTC');// Prints something like: Monday
echo date("l");// Prints something like: Monday 8th of August 2005 03:12:46 PM
echo date('l jS \of F Y h:i:s A');// Prints: July 1, 2000 is on a Saturday
echo "July 1, 2000 is on a ". date("l", mktime(0,0,0,7,1,2000));/* use the constants in the format parameter */// prints something like: Wed, 25 Sep 2013 15:28:57 -0700
echo date(DATE_RFC2822);// prints something like: 2000-07-01T00:00:00+00:00
echo date(DATE_ATOM, mktime(0,0,0,7,1,2000));
gdy chcesz używać PHP z OOP, jest to najlepszy sposób na uzyskanie daty i godziny.
<?php
// Specified date/time in your computer's time zone.
$date =newDateTime('2000-01-01');
echo $date->format('Y-m-d H:i:sP')."\n";// Specified date/time in the specified time zone.
$date =newDateTime('2000-01-01',newDateTimeZone('Pacific/Nauru'));
echo $date->format('Y-m-d H:i:sP')."\n";// Current date/time in your computer's time zone.
$date =newDateTime();
echo $date->format('Y-m-d H:i:sP')."\n";// Current date/time in the specified time zone.
$date =newDateTime(null,newDateTimeZone('Pacific/Nauru'));
echo $date->format('Y-m-d H:i:sP')."\n";// Using a UNIX timestamp. Notice the result is in the UTC time zone.
$date =newDateTime('@946684800');
echo $date->format('Y-m-d H:i:sP')."\n";// Non-existent values roll over.
$date =newDateTime('2000-02-30');
echo $date->format('Y-m-d H:i:sP')."\n";?>
jeśli używasz Composer , Laravel , Symfony lub innego frameworka, jest to najlepszy sposób na uzyskanie daty i godziny. Również ten pakiet rozszerza klasę DateTime w php, dzięki czemu używasz wszystkich metod w klasie Datetime. To wbudowane frameworki takie jak laravel, więc nie musisz instalować go osobno.
printf("Right now is %s",Carbon::now()->toDateTimeString());
printf("Right now in Vancouver is %s",Carbon::now('America/Vancouver'));// automatically converted to string
$tomorrow =Carbon::now()->addDay();
$lastWeek =Carbon::now()->subWeek();// Carbon embed 823 languages:
echo $tomorrow->locale('fr')->isoFormat('dddd, MMMM Do YYYY, h:mm');
echo $tomorrow->locale('ar')->isoFormat('dddd, MMMM Do YYYY, h:mm');
$officialDate =Carbon::now()->toRfc2822String();
$howOldAmI =Carbon::createFromDate(1975,5,21)->age;
$noonTodayLondonTime =Carbon::createFromTime(12,0,0,'Europe/London');
$internetWillBlowUpOn =Carbon::create(2038,01,19,3,14,7,'GMT');if(Carbon::now()->isWeekend()){
echo 'Party!';}
echo Carbon::now()->subMinutes(2)->diffForHumans();// '2 minutes ago'
Podobały mi się inne odpowiedzi, które pokazują, jak sformatować ciąg, nawet z niestandardowym tekstem, lub powiedzmy, jaki format jest najlepszy dla MySQL itp., Ale zdecydowanie zaakceptowałbym tę, aby pokazać wszystkie trzy typy i zastosowania: proceduralne, obiektowe i OOP .
s3c
1
@ s3c Mógłbym odpowiedzieć na coś takiego, ale pytanie brzmi: „Jak uzyskać aktualną datę i godzinę w PHP?”. Naszym głównym celem powinno być pytanie. :)
Mam na myśli to, że czas wraca EST, kiedy jestem PST ... ale dlaczego? Czy to czas serwera, a serwer to EST? Czy mogę uzyskać czas użytkowników? Ich serwer może być inną strefą czasową, nie?
Funkcja daty to godzina na serwerze, sprawdź ją lub tymczasowo ustaw / w PHP przed uruchomieniem daty.
TravisO,
dzięki, moja usługa nie może być na bieżąco z php, ponieważ O działa dla GMT, ale nie dla strefy czasowej P ani "e" ... dzięki !!
This $ date = date ('m / d / Y h: i: s a', time ()); pobiera datę serwera, ale nadal nie podaje mi daty użytkownika. To pokazuje mi na EST, kiedy jestem na PST. Chcę uzyskać datę wysłania formularza przez użytkownika i podobnie jak ja ich serwer może znajdować się w innej strefie czasowej.
Właściwie teraz, kiedy o tym myślę, czas nie jest tak ważny jak data. DZIĘKUJE ZA WSZYSTKO!!
18
echo date("d-m-Y H:i:sa");
Ten kod pobiera datę i godzinę serwera, na którym działa kod.
Doceniony za wprowadzającą w błąd odpowiedź. Nie, nie uzyska czasu lokalnego komputera, chyba że serwer jest uruchomiony lokalnie. Otrzyma datę i godzinę serwera.
MattWithoos,
@MattWithoos - „Ten kod otrzyma datę i godzinę„ serwera ”, nie powiedział nic o„ lokalnej maszynie ”, o której mówiłeś. Nie musisz też uruchamiać serwera„ lokalnie ”- możesz mieć serwer w dowolnym miejscu na świecie, w jakiejkolwiek strefie czasowej, którą chcesz. Twój głos w dół był całkowicie niewłaściwy i bez powodu
Neal Davis
1
@NealDavis Czy pomyślałeś o obejrzeniu edycji? Opublikowałem ten komentarz, zasugerowałem zmianę nieprawidłowych informacji, a tymczasem czekałem na zatwierdzenie. Teraz jest zatwierdzony i pokazuje prawidłowe informacje.
MattWithoos
1
@NealDavis Dodatkowo, jeśli miałeś problem z przeczytaniem oryginalnego postu, to dosłownie powiedział: „Ten kod pobierze datę i godzinę twojego lokalnego komputera (PC)”. To całkowicie mylące.
Zgodnie z artykułem How to Get Current Datetime (NOW) with PHP , istnieją dwa popularne sposoby uzyskania aktualnej daty. Aby uzyskać bieżącą datę / godzinę (teraz) z PHP, możesz użyć dateklasy z dowolną wersją PHP, lub lepiej datetimeklasę z PHP> = 5.2.
<?php
// Assuming today is March 10th, 2001, 5:16:18 pm, and that we are in the// Mountain Standard Time (MST) Time Zone
$today = date("F j, Y, g:i a");// March 10, 2001, 5:16 pm
$today = date("m.d.y");// 03.10.01
$today = date("j, n, Y");// 10, 3, 2001
$today = date("Ymd");// 20010310
$today = date('h-i-s, j-m-y, it is w Day');// 05-16-18, 10-03-01, 1631 1618 6 Satpm01
$today = date('\i\t \i\s \t\h\e jS \d\a\y.');// it is the 10th day.
$today = date("D M j G:i:s T Y");// Sat Mar 10 17:16:18 MST 2001
$today = date('H:m:s \m \i\s\ \m\o\n\t\h');// 17:03:18 m is month
$today = date("H:i:s");// 17:16:18
$today = date("Y-m-d H:i:s");// 2001-03-10 17:16:18 (the MySQL DATETIME format)?>
Że datefunkcja zwraca ciąg sformatowany zgodnie z podanym ciągu formatu przy użyciu danego znacznika czasu całkowitej lub aktualnego czasu, jeśli nie jest podana datownik. Innymi słowy, timestampjest opcjonalny i domyślnie przyjmuje wartość time ().
A parametry to -
format - wymagany. Określa format znacznika czasu
znacznik czasu - (Opcjonalnie) Określa znacznik czasu. Domyślnie jest to bieżąca data i godzina
Jak zdobyć prostą randkę
Wymagany parametr formatu date()funkcji określa sposób formatowania date (or time).
Oto kilka znaków, które są powszechnie używane w datach:
d - reprezentuje dzień miesiąca (od 01 do 31)
m - reprezentuje miesiąc (od 01 do 12)
Y - reprezentuje rok (czterocyfrowy)
l (małe „L”) - reprezentuje dzień tygodnia
Inne znaki, takie jak, "/", ".", or "-"można również wstawiać między znakami, aby dodać dodatkowe formatowanie.
Poniższy przykład formatuje dzisiejszą datę na trzy różne sposoby:
<?php
echo "Today is ". date("Y/m/d")."<br>";
echo "Today is ". date("Y.m.d")."<br>";
echo "Today is ". date("Y-m-d")."<br>";
echo "Today is ". date("l");?>
// Set the default timezone to use. Available since PHP 5.1
date_default_timezone_set('UTC');// Prints something like: Monday
echo date("l");// Prints something like: Monday 8th of August 2016 03:12:46 PM
echo date('l jS \of F Y h:i:s A');// Prints: July 1, 2016 is on a Saturday
echo "July 1, 2016 is on a ". date("l", mktime(0,0,0,7,1,2016));/* Use the constants in the format parameter */// Prints something like: Wed, 25 Sep 2013 15:28:57 -0700
echo date(DATE_RFC2822);// Prints something like: 2016-07-01T00:00:00+00:00
echo date(DATE_ATOM, mktime(0,0,0,7,1,2000));
$date = date('m/d/Y h:i:s a', time());
Odpowiedzi:
Czas upłynąłby na twoim serwerze. Łatwym obejściem tego problemu jest ręczne ustawienie strefy czasowej za pomocą
date_default_timezone_set
przed wywołaniem funkcjidate()
lubtime()
.Jestem w Melbourne, Australia , więc mam coś takiego:
Lub inny przykład to LA - US :
Możesz także sprawdzić, w jakiej strefie czasowej aktualnie znajduje się serwer:
Więc coś takiego:
Krótka odpowiedź na twoje pytanie brzmiałaby:
Wtedy cały czas będzie w strefie czasowej, którą właśnie ustawiłeś :)
źródło
Aby uzyskać informacje o strefie czasowej, zobacz Lista obsługiwanych stref czasowych .
źródło
Ponieważ PHP
5.2.0
możesz użyć tejDateTime()
klasy:I aby określić
timezone
:źródło
Datatime
przestrzeni nazw; Nie pamiętam, czy tak było w 2013 roku i od lat nie napisałem żadnego kodu PHP. Niezależnie od tego Twoja sugestia wydaje się poprawna, więc jeszcze raz dziękuję.Odniesienie: Oto link
Może to być bardziej niezawodne niż zwykłe dodawanie lub odejmowanie liczby sekund w ciągu dnia lub miesiąca od znacznika czasu ze względu na czas letni.
Kod PHP
źródło
PHP time () zwraca bieżący uniksowy znacznik czasu. Dzięki temu możesz użyć funkcji date (), aby sformatować ją według własnych potrzeb.
Jak wspomniał Paolo w komentarzach, drugi argument jest zbędny. Poniższy fragment kodu odpowiada powyższemu:
źródło
Możesz użyć
$_SERVER['REQUEST_TIME']
zmiennej (dostępnej od PHP 5.1.0) lubtime()
funkcji, aby uzyskać bieżący uniksowy znacznik czasu.źródło
time()
funkcję jest niezależny od strefy czasowej. (Tak więcdate_default_timezone_set("your-particular-timezone");
wcześniejsze wywołanie nie przyniesie żadnego efektu).Możesz użyć zarówno
$_SERVER['REQUEST_TIME']
zmiennej, jak itime()
funkcji. Oba zwracają znacznik czasu Unix.Przez większość czasu te dwa rozwiązania dają dokładnie taki sam uniksowy znacznik czasu . Różnica między nimi polega na tym, że
$_SERVER['REQUEST_TIME']
zwraca znacznik czasu ostatniego żądania serwera itime()
zwraca bieżącą godzinę. Może to powodować niewielkie różnice w dokładności w zależności od aplikacji, ale w większości przypadków oba te rozwiązania powinny wystarczyć.W oparciu o powyższy przykładowy kod będziesz chciał sformatować te informacje po uzyskaniu uniksowego znacznika czasu . Niesformatowany czas uniksowy wygląda następująco:
1232659628
Aby więc uzyskać coś, co zadziała, możesz użyć
date()
funkcji do sformatowania tego.Dobre informacje na temat sposobów korzystania z
date()
funkcji znajdują się w podręczniku PHP .Na przykład poniższy kod zwraca datę, która wygląda następująco
01/22/2009 04:35:00 pm
:źródło
$_SERVER['REQUEST_TIME']
?Funkcja daty PHP może wykonać tę pracę.
data()
Opis:
Zwraca ciąg sformatowany zgodnie z podanym ciągiem formatu przy użyciu podanego znacznika czasu liczby całkowitej lub bieżącego czasu, jeśli nie podano znacznika czasu.
Przykłady:
źródło
Aktualizacja
W przypadku formatu daty przydatna jest funkcja PHP date () .
źródło
źródło
Nowy programista PHP może pomylić, dlaczego istnieje wiele metod uzyskiwania bieżącej daty i godziny oraz których można użyć w ich projekcie.
1.
date
metoda (PHP 4, PHP 5, PHP 7)Jest to bardzo powszechny i najłatwiejszy sposób na uzyskanie daty i godziny w php.
Możesz dowiedzieć się więcej na ten temat tutaj
2.
DateTime
klasa (PHP 5> = 5.2.0, PHP 7)gdy chcesz używać PHP z OOP, jest to najlepszy sposób na uzyskanie daty i godziny.
Możesz dowiedzieć się więcej na ten temat tutaj
3. Pakiet daty i godziny emisji
jeśli używasz Composer , Laravel , Symfony lub innego frameworka, jest to najlepszy sposób na uzyskanie daty i godziny. Również ten pakiet rozszerza klasę DateTime w php, dzięki czemu używasz wszystkich metod w klasie Datetime. To wbudowane frameworki takie jak laravel, więc nie musisz instalować go osobno.
Możesz dowiedzieć się więcej na ten temat tutaj
Mam nadzieję, że to pomoże i jeśli znasz jakikolwiek inny sposób, aby uzyskać datę i godzinę, edytuj odpowiedź.
źródło
Posługiwać się:
To działa.
źródło
Ten kod pobiera datę i godzinę serwera, na którym działa kod.
źródło
Możesz użyć tego formatu również:
Lub
źródło
Zgodnie z artykułem How to Get Current Datetime (NOW) with PHP , istnieją dwa popularne sposoby uzyskania aktualnej daty. Aby uzyskać bieżącą datę / godzinę (teraz) z PHP, możesz użyć
date
klasy z dowolną wersją PHP, lub lepiejdatetime
klasę z PHP> = 5.2.Różne wyrażenia formatu daty są dostępne tutaj.
Przykład użycia daty
To wyrażenie zwróci TERAZ w formacie
Y-m-d H:i:s
.Przykład użycia klasy datetime
To wyrażenie zwróci TERAZ w formacie
Y-m-d H:i:s
.źródło
Drukuje tak
Niedziela, 9 grudnia 2012 r
źródło
źródło
Ustaw swoją strefę czasową:
Następnie wywołaj funkcje daty
źródło
Że
date
funkcja zwraca ciąg sformatowany zgodnie z podanym ciągu formatu przy użyciu danego znacznika czasu całkowitej lub aktualnego czasu, jeśli nie jest podana datownik. Innymi słowy,timestamp
jest opcjonalny i domyślnie przyjmuje wartość time ().A parametry to -
Jak zdobyć prostą randkę
Wymagany parametr formatu
date()
funkcji określa sposób formatowaniadate (or time)
.Oto kilka znaków, które są powszechnie używane w datach:
Inne znaki, takie jak,
"/", ".", or "-"
można również wstawiać między znakami, aby dodać dodatkowe formatowanie.Poniższy przykład formatuje dzisiejszą datę na trzy różne sposoby:
Kilka przydatnych linków
źródło
Jeśli chcesz mieć inny harmonogram, użyj:
źródło
źródło
Format daty zależy również:
źródło
Możesz użyć tego kodu:
źródło
Odkryłem, że najprostszym sposobem uzyskania aktualnego czasu w PHP jest coś takiego.
źródło
Innym prostym sposobem jest pobranie znacznika czasu bieżącej daty i godziny. Użyj funkcji mktime () :
Następnie możesz przekonwertować to na inny format daty:
Więcej formatów dat znajduje się tutaj: http://php.net/manual/en/function.date.php
źródło
Bardzo prosta
źródło
źródło
Jeśli jesteś Bangladeszem i chcesz poznać czas Dhaka, użyj tego:
źródło
Zwykle ta funkcja daty jest przydatna dla wszystkich: data („T / m / d”);
Ale czas jest czymś innym, ponieważ funkcja czasu zależy od wersji PHP lub daty systemowej.
Więc prawdopodobnie użyj go w ten sposób, aby uzyskać własną strefę czasową:
Ta funkcja pokazuje czas 24-godzinny.
źródło
Oto kilka znaków, które są często używane w czasach:
a - Małe litery Ante meridiem i Post meridiem (przed południem lub po południu)
Uzyskaj swoją strefę czasową
Sprawdź to (opcjonalnie)
Na randkę
Oto kilka znaków, które są powszechnie używane w datach:
Source-W3-Schools
źródło
.
wdate("Y/m/d") . ;
?