Gebruik van strtotime in NL tijdzone

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Guido  -

Guido -

23/12/2019 14:22:58
Quote Anchor link
Hallo,

Voor een script maak ik gebruik van de datum zonder tijd (midnight):
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$date = strtotime( 'today' );


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)
PHP script in nieuw venster Selecteer het PHP script
1
2
$tijdzone = date_default_timezone_set('Europe/Amsterdam');
$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 -
 
PHP hulp

PHP hulp

24/11/2024 06:27:14
 
- Ariën  -
Beheerder

- Ariën -

23/12/2019 15:43:46
Quote Anchor link
Kan je geen timezone in php.ini instellen?
 
Frank Nietbelangrijk

Frank Nietbelangrijk

23/12/2019 15:51:27
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>';

?>

Resultaat:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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

Hiermee zou het moeten lukken.
Gewijzigd op 23/12/2019 15:53:09 door Frank Nietbelangrijk
 
Guido  -

Guido -

23/12/2019 15:55:48
Quote Anchor link
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 -
 
Frank Nietbelangrijk

Frank Nietbelangrijk

23/12/2019 15:58:58
Quote Anchor link
En zo ook UTC uiteraard..
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>';
?>
 
Guido  -

Guido -

23/12/2019 16:10:45
Quote Anchor link
Hoi Frank,

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)
PHP script in nieuw venster Selecteer het PHP script
1
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>';


Guido
Gewijzigd op 23/12/2019 16:31:42 door Guido -
 
Frank Nietbelangrijk

Frank Nietbelangrijk

23/12/2019 17:35:30
Quote Anchor link
Als ik mijn UTC timestamp invul dan klopt t precies op 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?
 
Guido  -

Guido -

23/12/2019 17:56:52
Quote Anchor link
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.
 
- SanThe -

- SanThe -

23/12/2019 18:49:08
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$tijdzone
= date_default_timezone_set('Europe/Amsterdam');
$date = strtotime( 'today' );
echo date('d-m-Y H:i:s',$date);
?>


Geeft gewoon 23-12-2019 00:00:00
 
Frank Nietbelangrijk

Frank Nietbelangrijk

24/12/2019 00:22:02
Quote Anchor link
Each parameter of this function uses the default time zone unless a time zone is specified in that parameter. Be careful not to use different time zones in each parameter unless that is intended. See date_default_timezone_get() on the various ways to define the default time zone.

Dus ja als je dan de default time zone naar Europe/Amsterdam zet dan zou het moeten werken.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.