php strtotime-ты UTC-ды қолдануға мәжбүрлеңіз

Бұл туралы бірнеше сұрақ қойдым, бірақ нақты жауап жоқ ... strtotime() жолды UNIX уақыт белгісіне түрлендіру кезінде PHP үшін әдепкі уақыт белдеуін пайдаланады.

Дегенмен, UTC уақытында UNIX уақыт белгісін айналдыруды қалаймын. Бұл үшін параметр жоқ болғандықтан, мұны қалай жасауға болады?

Мен түрлендіруге тырысатын жол мынада: 2011-10-27T20: 23: 39, UTC-де. Мен UNIX уақыт белгісін UTC-де көрсетуді қалаймын.

Рақмет сізге

6
Сондай-ақ, жаңа DateTimeZone ('UTC'); пайдалануды қарастырыңыз stackoverflow.com/a/34651091/1066234
қосылды автор Kai Noack, көзі

2 жауаптар

Мен бұл сұрақтың өте ескі екенін түсінемін, бірақ пайдалы бола алатын басқа нұсқаны таптым. Php-ның уақыт белдеуін орнатып, оны қайтарудың орнына, уақыт белдеуін strtotime-ге өтетін жолдың бөлігі ретінде белгілей аласыз:

echo date_default_timezone_get();
output: America/Chicago

echo gmdate('Y-m-d H:i:s', strtotime('2011-10-27T20:23:39'));
output: 2011-10-28 01:23:39

echo gmdate('Y-m-d H:i:s', strtotime('2011-10-27T20:23:39 America/Chicago'));
output: 2011-10-28 01:23:39

echo gmdate('Y-m-d H:i:s', strtotime('2011-10-27T20:23:39 UTC'));
output 2011-10-27 20:23:39

Ескерту: Мен PHP 5.5.9-де, бірақ бұл кез-келген PHP нұсқасында жұмыс істеуі керек.

10
қосылды
Бұл жеңілірек, бірақ сіз пайдаланушы енгізуін қадағалауыңыз керек. Пайдаланушы енгізген нәрсені жай ғана жіберген болсаңыз, онда уақыт белдеуін не болмаса, жолды жоғалтатын нәрсені қамтуды білмейсіз.
қосылды автор Paul Hutchinson, көзі
Бұл жауап жауап алынғаннан әлдеқайда жақсырақ. +1
қосылды автор Druckles, көзі

strtotime қоңырауын жасау алдында жүйенің әдепкі уақыт белдеуін орнатыңыз:

date_default_timezone_set('UTC');
echo strtotime('2011-10-27T20:23:39')."\n";

// Proof:
print_r(getdate(strtotime('2011-10-27T20:23:39')));

// IMPORTANT: It's possible that you will want to
// restore the previous system timezone value here.
// It would need to have been saved with
// date_default_timezone_get().

See it in action.

6
қосылды
Бұл сценарийдің қалған бөлігімен мәселелерді тудырады ма? Менің ойымша, оны кейінірек орната аламын ба?
қосылды автор Brian, көзі
@Brian: Бұл мәселелер тудыруы мүмкін, иә. Бірақ оны қайта орнатқан кезде ешқандай проблема болмайды.
қосылды автор Jon, көзі