Gebruik van strtotime in NL tijdzone
Voor een script maak ik gebruik van de datum zonder tijd (midnight):
Maar bovenstaande geeft de UTC tijdzone en ik wil graag de locale tijdzone gebruiken (Europe/Amsterdam).
Ik heb al geprobeerd om eerst een nieuwe tijdzone in te stellen:
Code (php)
1
2
2
$tijdzone = date_default_timezone_set('Europe/Amsterdam');
$date = strtotime( 'today' );
$date = strtotime( 'today' );
Maar dit resulteert erin dat er 1 uur van de midnight tijd afgetrokken worden, dus tijd wordt 11:00:00 pm (= vorige dag).
Hoe kan ik bovenstaande gebruiken, inclusief de NL tijdzone?
Guido
Gewijzigd op 23/12/2019 14:25:46 door Guido -
Kan je geen timezone in php.ini instellen?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
$date = new DateTime('now', new DateTimeZone('Australia/Perth'));
echo 'current time in Perth: ' . $date->format('d-m-Y H:i:s') . '<br>';
echo 'current timestamp in Perth: ' . $date->getTimestamp() . '<br>';
$date->setTime(0, 0);
echo 'time in Perth at midnight: ' . $date->format('d-m-Y H:i:s') . '<br>';
echo 'timestamp in Perth at midnight: ' . $date->getTimestamp() . '<br><br>';
$date = new DateTime('now', new DateTimeZone('Europe/Amsterdam'));
echo 'current time in Amsterdam: ' . $date->format('d-m-Y H:i:s') . '<br>';
echo 'current timestamp in Amsterdam: ' . $date->getTimestamp() . '<br>';
$date->setTime(0, 0);
echo 'time in Amsterdam at midnight: ' . $date->format('d-m-Y H:i:s') . '<br>';
echo 'timestamp in Amsterdam at midnight: ' . $date->getTimestamp() . '<br>';
?>
$date = new DateTime('now', new DateTimeZone('Australia/Perth'));
echo 'current time in Perth: ' . $date->format('d-m-Y H:i:s') . '<br>';
echo 'current timestamp in Perth: ' . $date->getTimestamp() . '<br>';
$date->setTime(0, 0);
echo 'time in Perth at midnight: ' . $date->format('d-m-Y H:i:s') . '<br>';
echo 'timestamp in Perth at midnight: ' . $date->getTimestamp() . '<br><br>';
$date = new DateTime('now', new DateTimeZone('Europe/Amsterdam'));
echo 'current time in Amsterdam: ' . $date->format('d-m-Y H:i:s') . '<br>';
echo 'current timestamp in Amsterdam: ' . $date->getTimestamp() . '<br>';
$date->setTime(0, 0);
echo 'time in Amsterdam at midnight: ' . $date->format('d-m-Y H:i:s') . '<br>';
echo 'timestamp in Amsterdam at midnight: ' . $date->getTimestamp() . '<br>';
?>
Resultaat:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
current time in Perth: 23-12-2019 22:49:18
current timestamp in Perth: 1577112558
time in Perth at midnight: 23-12-2019 00:00:00
timestamp in Perth at midnight: 1577030400
current time in Amsterdam: 23-12-2019 15:49:18
current timestamp in Amsterdam: 1577112558
time in Amsterdam at midnight: 23-12-2019 00:00:00
timestamp in Amsterdam at midnight: 1577055600
current timestamp in Perth: 1577112558
time in Perth at midnight: 23-12-2019 00:00:00
timestamp in Perth at midnight: 1577030400
current time in Amsterdam: 23-12-2019 15:49:18
current timestamp in Amsterdam: 1577112558
time in Amsterdam at midnight: 23-12-2019 00:00:00
timestamp in Amsterdam at midnight: 1577055600
Hiermee zou het moeten lukken.
Gewijzigd op 23/12/2019 15:53:09 door Frank Nietbelangrijk
Quote:
Kan je geen timezone in php.ini instellen?
Nee, betreft WordPress website en standaard tijdzone moet altijd UTC zijn, ivm bepaalde native scrips van dat cms.
Bij nader inzien kan ik deze vraag misschien beter op het WordPress forum stellen, want dit cms heeft ook eigen datum en tijd gerelateerde functions.
Maar mocht er ook een standaard PHP fix hiervoor zijn, graag!
Guido
Toevoeging op 23/12/2019 15:58:55:
Bedankt Frank, ik ga hiermee aan de slag!
Guido
Gewijzigd op 23/12/2019 15:56:43 door Guido -
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
$date = new DateTime('now', new DateTimeZone('UTC'));
echo 'current time in UTC: ' . $date->format('d-m-Y H:i:s') . '<br>';
echo 'current timestamp in UTC: ' . $date->getTimestamp() . '<br>';
$date->setTime(0, 0);
echo 'time in UTC at midnight: ' . $date->format('d-m-Y H:i:s') . '<br>';
echo 'timestamp in UTC at midnight: ' . $date->getTimestamp() . '<br>';
?>
$date = new DateTime('now', new DateTimeZone('UTC'));
echo 'current time in UTC: ' . $date->format('d-m-Y H:i:s') . '<br>';
echo 'current timestamp in UTC: ' . $date->getTimestamp() . '<br>';
$date->setTime(0, 0);
echo 'time in UTC at midnight: ' . $date->format('d-m-Y H:i:s') . '<br>';
echo 'timestamp in UTC at midnight: ' . $date->getTimestamp() . '<br>';
?>
Quote:
timestamp in Amsterdam at midnight: 1577055600
Volgens Epoch Unix Time Stamp Converter is deze stamp de vorge dag: 12/22/2019 @ 11:00pm (UTC)
(dus zelfde als waar ik tegenaan loop)
Ik gebruik deze tijd om events te tonen. Event wordt wel of niet getoond, gebaseerd op de NL tijd.
Omdat ik nu nog de UTC tijd gebruik, is event tot 01:00 NL tijd zichtbaar.
Guido
Toevoeging op 23/12/2019 16:34:48:
Ik denk dat ik het gevonden heb door de offset erbij op te tellen:
Code (php)
1
2
3
4
2
3
4
$date = new DateTime('now', new DateTimeZone('Europe/Amsterdam'));
$date->setTime(0, 0);
$midnight = $date->getTimestamp()+$date->getOffset();
echo 'timestamp in Amsterdam at midnight: ' .$midnight.'<br>';
$date->setTime(0, 0);
$midnight = $date->getTimestamp()+$date->getOffset();
echo 'timestamp in Amsterdam at midnight: ' .$midnight.'<br>';
Guido
Gewijzigd op 23/12/2019 16:31:42 door Guido -
https://www.epochconverter.com/ :-)
>> Ik denk dat ik het gevonden heb door de offset erbij op te tellen
Oke.. dat is de offset gezien vanuit UTC?
Als ik mijn UTC timestamp invul dan klopt t precies op >> Ik denk dat ik het gevonden heb door de offset erbij op te tellen
Oke.. dat is de offset gezien vanuit UTC?
Ja, ik moet vandaag 12:00 am hebben. Dus ik tel de offset er weer bij op. Zodat het vandaag 12:00 am wordt. Oftewel, een event blijft de hele dag zichtbaar en verdwijnt na 12:00 am vannacht.
Code (php)
Geeft gewoon 23-12-2019 00:00:00
Dus ja als je dan de default time zone naar Europe/Amsterdam zet dan zou het moeten werken.