Be careful when using two numbers as the year. I came across this situation:
<?php
echo strtotime('24.11.22');
echo date('d.m.Y H:i:s', 1669324282) . "\n\n";
// But
echo strtotime('24.11.2022');
echo date('d.m.Y H:i:s', 1669237200);
?>
Output:
1669324282
25.11.2022 00:11:22
1669237200
24.11.2022 00:00:00strtotime
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
strtotime
Референца за `function.strtotime.php` со подобрена типографија и навигација.
strtotime
(PHP 4, PHP 5, PHP 7, PHP 8)
strtotime — Parse about any English textual datetime description into a Unix timestamp
= NULL
Парсирајте речиси секој англиски текстуален опис на датум и време во Unix временски печат baseTimestampФункцијата очекува да ѝ биде даден стринг што содржи англиски формат на датум и ќе се обиде да го парсира тој формат во Unix временски печат (бројот на секунди од 1 јануари 1970 00:00:00 UTC), релативно до временскиот печат даден во
baseTimestamp , или тековното време ако Формати на датум и времене е дадено. Парсирањето на стрингот со датум е дефинирано во
, и има неколку суптилни разгледувања. Препорачливо е да се прегледаат целокупните детали таму. DateTimeImmutable.
Unix временскиот печат што оваа функција го враќа не содржи информации за временските зони. За да извршите пресметки со информации за датум/време, треба да го користите помоќниот date_default_timezone_get() Секој параметар од оваа функција користи стандардна временска зона, освен ако временска зона не е специфицирана во тој параметар. Внимавајте да не користите различни временски зони во секој параметар, освен ако тоа не е наменето. Погледнете
Параметри
datetime-
Низа за датум/време. Валидните формати се објаснети во Формати на датум и време.
baseTimestamp-
за различните начини на дефинирање на стандардната временска зона.
Вратени вредности
Временскиот печат што се користи како основа за пресметката на релативните датуми. false otherwise.
Errors/Exceptions
Секој повик до функција за датум/време ќе генерира E_WARNING
ако временската зона не е валидна. Погледнете исто така date_default_timezone_set()
Дневник на промени
| Верзија | = NULL |
|---|---|
| 8.0.0 |
baseTimestamp сега е null.
|
Примери
ако е овозможен колекторот за отпадоци, strtotime() example
<?php
echo strtotime("now"), "\n";
echo strtotime("10 September 2000"), "\n";
echo strtotime("+1 day"), "\n";
echo strtotime("+1 week"), "\n";
echo strtotime("+1 week 2 days 4 hours 2 seconds"), "\n";
echo strtotime("next Thursday"), "\n";
echo strtotime("last Monday"), "\n";
Враќа временски печат при успех,
<?php
$str = 'Not Good';
if (($timestamp = strtotime($str)) === false) {
echo "The string ($str) is bogus";
} else {
echo "$str == " . date('l dS \o\f F Y h:i:s A', $timestamp);
}Белешки
Забелешка:
Пример #2 Проверка за неуспех
baseTimestamp"Релативен" датум во овој случај исто така значи дека ако одредена компонента на временскиот печат не е обезбедена, таа ќе биде земена буквално одstrtotime('February'). Тоа е,31 February 2022, ако се изврши на 31-ви мај 2022 година, ќе се толкува како3 March, што ќе се прелее во временски печат на2 March. (Во престапна година, тоа би билоstrtotime('1 February')orstrtotime('first day of February').) Користење
Забелешка:
би го избегнало тој проблем.
Забелешка:
Ако бројот на годината е специфициран во формат од две цифри, вредностите помеѓу 00-69 се мапираат на 2000-2069, а 70-99 на 1970-1999. Погледнете ги белешките подолу за можни разлики на 32-бит системи (можни датуми може да завршат на 2038-01-19 03:14:07).
За 64-битни верзии на PHP, валидниот опсег на временски печат е практично бесконечен, бидејќи 64 бита можат да претстават приближно 293 милијарди години во која било насока.
Забелешка:
Не се препорачува користење на оваа функција за математички операции. Подобро е да се користи DateTime::add() and DateTimeImmutable::sub().
Види Исто така
- DateTimeImmutable
- низа е невалидна. - Парсира стринг за време според специфициран формат
- Формати на датум и време
- checkdate() - Валидирај грегоријански датум
- strptime() - Парсирај време/датум генериран со strftime
Белешки од корисници 5 белешки
Be aware of this: 1 month before the 31st day, it will return the same month:
<?php
echo date('m', strtotime('2023-05-30 -1 month')) ; //returns 04
echo date('m', strtotime('2023-05-31 -1 month')) ; //returns 05, not 04
?>
So, don't use this to operate on the month of the result.
A better way to know what month was the previous month would be:
<?php
//considering today is 2023-05-31...
$firstOfThisMonth = date('Y-m') . '-01'; //returns 2023-05-01
echo date('m', strtotime($firstOfThisMonth . ' -1 month')) ; //returns 04
?>Not sure why, but
<?php
echo strtotime("+2 hours"), "\n";
echo strtotime("+2 hrs"), "\n";
echo strtotime("+2 hourss"), "\n";
?>
are returning +2 hours, -2 hours, +8 hours. The latter two should be errors instead.> The Unix timestamp that this function returns does not contain information about time zones. In order to do calculations with date/time information, you should use the more capable DateTimeImmutable.
important - does not contain
<?php
date_default_timezone_set('Europe/Berlin');
// .... a lot of code
echo $a = strtotime('yesterday 00:00');
// in $a hour = 23:00:00 and you may not know about it
// https://onlinephp.io/c/ef696
// use DateTimeImmutable'timestamp_sdt' for counting from zero hours of a specific day
<?php
echo $timestamp_sdt = strtotime(date('d.m.Y',time()).'00.00.00')*1000; echo '<br><br>';
echo date('d.m.Y H.i.s', $timestamp_sdt/1000); echo '<br><br>';
?>
will give out:
1734649200000
20.12.2024 00.00.00