Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > pl.comp.lang.php > #15788 > unrolled thread
| Started by | Roman Tyczka <noemail@because.no> |
|---|---|
| First post | 2018-05-26 14:25 +0200 |
| Last post | 2018-05-28 05:36 -0700 |
| Articles | 6 — 2 participants |
Back to article view | Back to pl.comp.lang.php
[cross] MySQL i timestamp Roman Tyczka <noemail@because.no> - 2018-05-26 14:25 +0200
Re: [cross] MySQL i timestamp Arkadiusz Moch <arkadiusz.moch@gmail.com> - 2018-05-27 21:25 -0700
Re: [cross] MySQL i timestamp Roman Tyczka <noemail@because.no> - 2018-05-28 13:32 +0200
Re: [cross] MySQL i timestamp Roman Tyczka <noemail@because.no> - 2018-05-28 13:54 +0200
Re: [cross] MySQL i timestamp Roman Tyczka <noemail@because.no> - 2018-05-28 14:30 +0200
Re: [cross] MySQL i timestamp Arkadiusz Moch <arkadiusz.moch@gmail.com> - 2018-05-28 05:36 -0700
| From | Roman Tyczka <noemail@because.no> |
|---|---|
| Date | 2018-05-26 14:25 +0200 |
| Subject | [cross] MySQL i timestamp |
| Message-ID | <136fubwhcunsl$.dlg@tyczka.com> |
Witam, Mam w tabeli kolumnę typu Timestamp. Edytorem (DBWorkbench) widzę, że przedstawia ona wartość: 26.05.2018 14:16:24 To prawidłowa wartość, bo pochodzi z chwili inserta (default current_timestamp). Teraz chcę odczytać wartość tego timestampa jako unix timestamp czyli int. Z poziomu PHP za pomocą PDO otrzymuję wartość: 1527336984 Jednak ta liczba (wg. http://unixtimstamp.com) reprezentuje: 26.05.2018 12:16:24 Czyli przesunięte o 2h wstecz, zatem pewnie czas UTC. Skąd to się bierze? I jak to poprawnie odczytać, żeby mieć tę wartość unix timestampa poprawną? -- pozdrawiam Roman Tyczka
[toc] | [next] | [standalone]
| From | Arkadiusz Moch <arkadiusz.moch@gmail.com> |
|---|---|
| Date | 2018-05-27 21:25 -0700 |
| Message-ID | <a4f7f2c7-076f-44d7-adcc-7a3d5f0aa162@googlegroups.com> |
| In reply to | #15788 |
W dniu sobota, 26 maja 2018 14:25:31 UTC+2 użytkownik Roman Tyczka napisał: > Witam, > > Mam w tabeli kolumnę typu Timestamp. Edytorem (DBWorkbench) widzę, że > przedstawia ona wartość: > > 26.05.2018 14:16:24 > > To prawidłowa wartość, bo pochodzi z chwili inserta (default > current_timestamp). > Teraz chcę odczytać wartość tego timestampa jako unix timestamp czyli int. > Z poziomu PHP za pomocą PDO otrzymuję wartość: 1527336984 > Jednak ta liczba (wg. http://unixtimstamp.com) reprezentuje: > > 26.05.2018 12:16:24 > > Czyli przesunięte o 2h wstecz, zatem pewnie czas UTC. > Skąd to się bierze? I jak to poprawnie odczytać, żeby mieć tę wartość unix > timestampa poprawną? > > -- > pozdrawiam > Roman Tyczka Sprawdź php.ini: [...] [Date] ; Defines the default timezone used by the date functions ; http://php.net/date.timezone date.timezone = "Europe/Warsaw" [...]
[toc] | [prev] | [next] | [standalone]
| From | Roman Tyczka <noemail@because.no> |
|---|---|
| Date | 2018-05-28 13:32 +0200 |
| Message-ID | <iinebgrxzwkk$.dlg@tyczka.com> |
| In reply to | #15789 |
On Sun, 27 May 2018 21:25:42 -0700 (PDT), Arkadiusz Moch wrote:
> W dniu sobota, 26 maja 2018 14:25:31 UTC+2 użytkownik Roman Tyczka napisał:
>> Witam,
>>
>> Mam w tabeli kolumnę typu Timestamp. Edytorem (DBWorkbench) widzę, że
>> przedstawia ona wartość:
>>
>> 26.05.2018 14:16:24
>>
>> To prawidłowa wartość, bo pochodzi z chwili inserta (default
>> current_timestamp).
>> Teraz chcę odczytać wartość tego timestampa jako unix timestamp czyli int.
>> Z poziomu PHP za pomocą PDO otrzymuję wartość: 1527336984
>> Jednak ta liczba (wg. http://unixtimstamp.com) reprezentuje:
>>
>> 26.05.2018 12:16:24
>>
>> Czyli przesunięte o 2h wstecz, zatem pewnie czas UTC.
>> Skąd to się bierze? I jak to poprawnie odczytać, żeby mieć tę wartość unix
>> timestampa poprawną?
>>
>> --
>> pozdrawiam
>> Roman Tyczka
>
> Sprawdź php.ini:
>
> [...]
> [Date]
> ; Defines the default timezone used by the date functions
> ; http://php.net/date.timezone
> date.timezone = "Europe/Warsaw"
> [...]
Niestety na biznes-host nie ma dostępu do php.ini
Spróbowałem za pomocą funkcji w skrypcie:
date_default_timezone_set('Europe/Warsaw');
ale nic to nie dało.
A czy jest jakaś funkcja w PHP, której zapodam unix timestampa w UTC i ona
skoryguje go do lokalnego czasu serwera? Nie mogę nic takiego znaleźć.
--
pozdrawiam
Roman Tyczka
[toc] | [prev] | [next] | [standalone]
| From | Roman Tyczka <noemail@because.no> |
|---|---|
| Date | 2018-05-28 13:54 +0200 |
| Message-ID | <nqi3td966fj2$.dlg@tyczka.com> |
| In reply to | #15790 |
On Mon, 28 May 2018 13:32:31 +0200, Roman Tyczka wrote:
> A czy jest jakaś funkcja w PHP, której zapodam unix timestampa w UTC i ona
> skoryguje go do lokalnego czasu serwera? Nie mogę nic takiego znaleźć.
Próbuję tak:
$date = new DateTime();
//ustawiam UTC
$dtz = new DateTimeZone('UTC');
$date->setTimezone($dtz);
$date->setTimestamp($input_timestamp);
//zmieniam timezone na nasz
$dtz = new DateTimeZone('Europe/Warsaw');
$date->setTimezone($dtz);
$x = $date->getTimestamp();
$y = $x - $dateOfForgotten;
i $y zawsze jest zero, bez względu jak ustawiam timezone.
Czego nie ogarniam?
--
pozdrawiam
Roman Tyczka
[toc] | [prev] | [next] | [standalone]
| From | Roman Tyczka <noemail@because.no> |
|---|---|
| Date | 2018-05-28 14:30 +0200 |
| Message-ID | <hbpy6n927uzi$.dlg@tyczka.com> |
| In reply to | #15791 |
On Mon, 28 May 2018 13:54:05 +0200, Roman Tyczka wrote: > $x = $date->getTimestamp(); > $y = $x - $dateOfForgotten; > > > i $y zawsze jest zero, bez względu jak ustawiam timezone. > > Czego nie ogarniam? oczywiście pomyliłem kod, ostatnia linijka: $y = $x - $input_timestamp; -- pozdrawiam Roman Tyczka
[toc] | [prev] | [next] | [standalone]
| From | Arkadiusz Moch <arkadiusz.moch@gmail.com> |
|---|---|
| Date | 2018-05-28 05:36 -0700 |
| Message-ID | <5ec7db36-9b3e-4777-ac54-ea2b626d9a08@googlegroups.com> |
| In reply to | #15791 |
Polecam Debugger:
https://www.eclipse.org/downloads/packages/eclipse-php-developers/oxygen3a
Prześledź u siebie krok po kroku swój skrypt, bo tu nie widać jaką wartość mają zmienne:
$input_timestamp
$dateOfForgotten
W moim debuggerze widać jak niżej:
$date = new DateTime(); // $date->date=="2018-05-28 14:26:49.000000"
$dtz = new DateTimeZone('UTC');
$date->setTimezone($dtz); // $date->date=="2018-05-28 12:26:49.000000"
a potem już nie sensu debuggować, bo nie wiadomo jaka jest wartość $input_timestamp.
[toc] | [prev] | [standalone]
Back to top | Article view | pl.comp.lang.php
csiph-web