Відповіді:
Час піде на час вашого сервера. Простий спосіб вирішити це - вручну встановити часовий пояс за допомогою date_default_timezone_set
перед викликом date()
або time()
функцій.
Я в Мельбурні, Австралія, тому у мене є щось подібне:
date_default_timezone_set('Australia/Melbourne');
Або інший приклад - LA - US :
date_default_timezone_set('America/Los_Angeles');
Ви також можете побачити, в якому часовому поясі зараз працює сервер через:
date_default_timezone_get();
Тож щось на кшталт:
$timezone = date_default_timezone_get();
echo "The current server timezone is: " . $timezone;
Отже, короткою відповіддю на ваше запитання було б:
// Change the line below to your timezone!
date_default_timezone_set('Australia/Melbourne');
$date = date('m/d/Y h:i:s a', time());
Тоді всі часи були б у часовому поясі, який ви тільки що встановили :)
// Simply:
$date = date('Y-m-d H:i:s');
// Or:
$date = date('Y/m/d H:i:s');
// This would return the date in the following formats respectively:
$date = '2012-03-06 17:33:07';
// Or
$date = '2012/03/06 17:33:07';
/**
* This time is based on the default server time zone.
* If you want the date in a different time zone,
* say if you come from Nairobi, Kenya like I do, you can set
* the time zone to Nairobi as shown below.
*/
date_default_timezone_set('Africa/Nairobi');
// Then call the date functions
$date = date('Y-m-d H:i:s');
// Or
$date = date('Y/m/d H:i:s');
// date_default_timezone_set() function is however
// supported by PHP version 5.1.0 or above.
Для посилання на часовий пояс див. Список підтримуваних часових поясів .
З PHP 5.2.0
ви можете використовувати DateTime()
клас:
use \Datetime;
$now = new DateTime();
echo $now->format('Y-m-d H:i:s'); // MySQL datetime format
echo $now->getTimestamp(); // Unix Timestamp -- Since PHP 5.3
І вказати timezone
:
$now = new DateTime(null, new DateTimeZone('America/New_York'));
$now->setTimezone(new DateTimeZone('Europe/London')); // Another way
echo $now->getTimezone();
Datatime
простору імен; Я не можу згадати, чи так це було в 2013 році, і я не писав жодного PHP-коду протягом багатьох років. Незалежно, ваша пропозиція здається правильною, тому ще раз дякую.
Довідка: Ось посилання
Це може бути більш надійним, ніж просто додавання або віднімання кількості секунд за день або місяць до часової позначки через літній час.
PHP-код
// Assuming today is March 10th, 2001, 5:16:18 pm, and that we are in the
// Mountain Standard Time (MST) Time Zone
$today = date("F j, Y, g:i a"); // March 10, 2001, 5:16 pm
$today = date("m.d.y"); // 03.10.01
$today = date("j, n, Y"); // 10, 3, 2001
$today = date("Ymd"); // 20010310
$today = date('h-i-s, j-m-y, it is w Day'); // 05-16-18, 10-03-01, 1631 1618 6 Satpm01
$today = date('\i\t \i\s \t\h\e jS \d\a\y.'); // it is the 10th day.
$today = date("D M j G:i:s T Y"); // Sat Mar 10 17:16:18 MST 2001
$today = date('H:m:s \m \i\s\ \m\o\n\t\h'); // 17:03:18 m is month
$today = date("H:i:s"); // 17:16:18
$today = date("Y-m-d H:i:s"); // 2001-03-10 17:16:18 (the MySQL DATETIME format)
PHP time () повертає поточну часову позначку Unix. За допомогою цього ви можете використовувати функцію date (), щоб відформатувати її під свої потреби.
$date = date('Format String', time());
Як згадував Паоло в коментарях, другий аргумент є зайвим. Наступний фрагмент еквівалентний наведеному вище:
$date = date('Format String');
Ви можете використовувати $_SERVER['REQUEST_TIME']
змінну (доступну з PHP 5.1.0) або time()
функцію для отримання поточної мітки часу Unix.
time()
функцією, не залежить від часового поясу. (Тож дзвінки date_default_timezone_set("your-particular-timezone");
раніше не матимуть ефекту.)
Можна використовувати як $_SERVER['REQUEST_TIME']
змінну, так і time()
функцію. Обидва вони повертають часову позначку Unix.
Більшість часу ці два рішення даватимуть таку саму часову марку Unix . Різниця між ними полягає в тому, що $_SERVER['REQUEST_TIME']
повертає штамп часу останнього запиту сервера та time()
повертає поточний час. Це може створити незначні відмінності в точності залежно від вашої програми, але в більшості випадків обох цих рішень повинно вистачити.
Виходячи з наведеного вище прикладу коду, ви хочете відформатувати цю інформацію, як тільки отримаєте часову марку Unix . Неформатний час Unix виглядає так:1232659628
Отже, щоб отримати щось, що буде працювати, ви можете скористатися date()
функцією для його форматування.
Хороша довідка щодо способів використання date()
функції знаходиться в Посібнику з PHP .
Наприклад, наступний код повертає дату, яка виглядає приблизно так 01/22/2009 04:35:00 pm
:
echo date("m/d/Y h:i:s a", time());
$_SERVER['REQUEST_TIME']
?
Функція дати PHP може виконати цю роботу.
Опис:
string date(string $format [, int $timestamp = time()])
Повертає рядок, відформатований відповідно до заданого рядка формату, використовуючи задану цілу часову позначку або поточний час, якщо часова мітка не вказана.
Приклади:
$today = date("F j, Y, g:i a"); // March 10, 2001, 5:16 pm
$today = date("m.d.y"); // 03.10.01
$today = date("j, n, Y"); // 10, 3, 2001
$today = date("Ymd"); // 20010310
$today = date('h-i-s, j-m-y, it is w Day'); // 05-16-18, 10-03-01, 1631 1618 6 Satpm01
$today = date('\i\t \i\s \t\h\e jS \d\a\y.'); // it is the 10th day.
$today = date("D M j G:i:s T Y"); // Sat Mar 10 17:16:18 MST 2001
$today = date('H:m:s \m \i\s\ \m\o\n\t\h'); // 17:03:18 m is month
$today = date("H:i:s"); // 17:16:18
$today = date("Y-m-d H:i:s"); // 2001-03-10 17:16:18 (the MySQL DATETIME format)
$date = new DateTime('now', new DateTimeZone('Asia/Kolkata'));
echo $date->format('d-m-Y H:i:s');
Оновлення
//Also get am/pm in datetime:
echo $date->format('d-m-Y H:i:s a'); // output 30-12-2013 10:16:15 am
Для формату дати корисна функція PHP date () .
дуже просто
echo $ date = дата ('Ymd H: i: s');
Для нового програміста PHP може заплутатися, чому існує безліч методів для отримання поточної дати та часу та який саме використовувати у своєму проекті.
1. date
метод (PHP 4, PHP 5, PHP 7)
Це дуже поширений і найпростіший спосіб отримати дату та час у php.
// set the default timezone to use. Available since PHP 5.1
date_default_timezone_set('UTC');
// Prints something like: Monday
echo date("l");
// Prints something like: Monday 8th of August 2005 03:12:46 PM
echo date('l jS \of F Y h:i:s A');
// Prints: July 1, 2000 is on a Saturday
echo "July 1, 2000 is on a " . date("l", mktime(0, 0, 0, 7, 1, 2000));
/* use the constants in the format parameter */
// prints something like: Wed, 25 Sep 2013 15:28:57 -0700
echo date(DATE_RFC2822);
// prints something like: 2000-07-01T00:00:00+00:00
echo date(DATE_ATOM, mktime(0, 0, 0, 7, 1, 2000));
Ви можете дізнатися більше про це тут
2. DateTime
клас (PHP 5> = 5.2.0, PHP 7)
коли ви хочете використовувати PHP з OOP, це найкращий спосіб отримати дату та час.
<?php
// Specified date/time in your computer's time zone.
$date = new DateTime('2000-01-01');
echo $date->format('Y-m-d H:i:sP') . "\n";
// Specified date/time in the specified time zone.
$date = new DateTime('2000-01-01', new DateTimeZone('Pacific/Nauru'));
echo $date->format('Y-m-d H:i:sP') . "\n";
// Current date/time in your computer's time zone.
$date = new DateTime();
echo $date->format('Y-m-d H:i:sP') . "\n";
// Current date/time in the specified time zone.
$date = new DateTime(null, new DateTimeZone('Pacific/Nauru'));
echo $date->format('Y-m-d H:i:sP') . "\n";
// Using a UNIX timestamp. Notice the result is in the UTC time zone.
$date = new DateTime('@946684800');
echo $date->format('Y-m-d H:i:sP') . "\n";
// Non-existent values roll over.
$date = new DateTime('2000-02-30');
echo $date->format('Y-m-d H:i:sP') . "\n";
?>
Ви можете дізнатися більше про це тут
3. Пакет часу на вуглецю
якщо ви використовуєте композитор , Laravel , Symfony або будь-який вид рамки, це найкращий спосіб отримати дату та час. Також цей пакет розширює клас DateTime в php, тому ви використовуєте весь метод у класі Datetime. Цей вбудований в рамки, як laravel, тому вам не доведеться встановлювати його окремо.
printf("Right now is %s", Carbon::now()->toDateTimeString());
printf("Right now in Vancouver is %s", Carbon::now('America/Vancouver')); // automatically converted to string
$tomorrow = Carbon::now()->addDay();
$lastWeek = Carbon::now()->subWeek();
// Carbon embed 823 languages:
echo $tomorrow->locale('fr')->isoFormat('dddd, MMMM Do YYYY, h:mm');
echo $tomorrow->locale('ar')->isoFormat('dddd, MMMM Do YYYY, h:mm');
$officialDate = Carbon::now()->toRfc2822String();
$howOldAmI = Carbon::createFromDate(1975, 5, 21)->age;
$noonTodayLondonTime = Carbon::createFromTime(12, 0, 0, 'Europe/London');
$internetWillBlowUpOn = Carbon::create(2038, 01, 19, 3, 14, 7, 'GMT');
if (Carbon::now()->isWeekend()) {
echo 'Party!';
}
echo Carbon::now()->subMinutes(2)->diffForHumans(); // '2 minutes ago'
Ви можете дізнатися більше про це тут
Сподіваємось, це допоможе, і якщо ви знаєте будь-який інший спосіб отримати дату та час, сміливо відредагуйте відповідь.
Використання:
$date = date('m/d/Y h:i:s a', time());
Це працює.
echo date("d-m-Y H:i:sa");
Цей код отримає дату та час роботи сервера, на якому працює код.
Ви також можете використовувати цей формат:
$date = date("d-m-Y");
Або
$date = date("Y-m-d H:i:s");
Відповідно до статті Як отримати поточну дату (ЗАРАЗ) за допомогою PHP , є два загальних способи отримати поточну дату. Щоб отримати поточний час (зараз) з PHP, ви можете використовувати date
клас з будь-якою версією PHP або, краще, datetime
клас з PHP> = 5.2.
Тут доступні різні вирази формату дати.
Цей вираз поверне ЗАРАЗ у форматі Y-m-d H:i:s
.
<?php
echo date('Y-m-d H:i:s');
?>
Цей вираз поверне ЗАРАЗ у форматі Y-m-d H:i:s
.
<?php
$dt = new DateTime();
echo $dt->format('Y-m-d H:i:s');
?>
<?php
// Assuming today is March 10th, 2001, 5:16:18 pm, and that we are in the
// Mountain Standard Time (MST) Time Zone
$today = date("F j, Y, g:i a"); // March 10, 2001, 5:16 pm
$today = date("m.d.y"); // 03.10.01
$today = date("j, n, Y"); // 10, 3, 2001
$today = date("Ymd"); // 20010310
$today = date('h-i-s, j-m-y, it is w Day'); // 05-16-18, 10-03-01, 1631 1618 6 Satpm01
$today = date('\i\t \i\s \t\h\e jS \d\a\y.'); // it is the 10th day.
$today = date("D M j G:i:s T Y"); // Sat Mar 10 17:16:18 MST 2001
$today = date('H:m:s \m \i\s\ \m\o\n\t\h'); // 17:03:18 m is month
$today = date("H:i:s"); // 17:16:18
$today = date("Y-m-d H:i:s"); // 2001-03-10 17:16:18 (the MySQL DATETIME format)
?>
date(format, timestamp)
В date
функція повертає рядок , відформатованого в відповідно до заданого формату рядка , використовуючи заданий ціле число або тимчасову мітку поточного часу , якщо ні тимчасова мітка не задана. Іншими словами, timestamp
необов’язково і за замовчуванням значення часу ().
А параметри -
формат - Обов’язковий. Визначає формат часової позначки
мітка часу - (необов'язково) Вказує часову марку. За замовчуванням - поточна дата та час
Необхідний параметр формату date()
функції вказує, як відформатувати формат date (or time)
.
Ось кілька символів, які зазвичай використовуються для дат:
Інші символи, як, наприклад, "/", ".", or "-"
також можна вставити між символами, щоб додати додаткове форматування.
Приклад нижче формулює сьогоднішню дату трьома різними способами:
<?php
echo "Today is " . date("Y/m/d") . "<br>";
echo "Today is " . date("Y.m.d") . "<br>";
echo "Today is " . date("Y-m-d") . "<br>";
echo "Today is " . date("l");
?>
Якщо ви хочете інший масштаб часу, будь ласка, використовуйте:
$tomorrow = mktime(0, 0, 0, date("m") , date("d")+1, date("Y"));
$lastmonth = mktime(0, 0, 0, date("m")-1, date("d"), date("Y"));
$nextyear = mktime(0, 0, 0, date("m"), date("d"), date("Y")+1);
date_default_timezone_set("Asia/Calcutta");
echo date("Y/m/d H:i:s");
Формат дати також залежить:
echo date("d/m/Y H:i:sa"); // 13/04/2017 19:38:15pm
Ви можете використовувати цей код:
<?php
$currentDateTime = date('Y-m-d H:i:s');
echo $currentDateTime;
?>
Ще один простий спосіб - взяти часову позначку поточної дати та часу. Використовуйте функцію mktime () :
$now = mktime(); // Return timestamp of the current time
Потім ви можете конвертувати це в інший формат дати:
//// Prints something like: Thursday 26th of January 2017 01:12:36 PM
echo date('l jS \of F Y h:i:s A',$now);
Більше форматів дат можна знайти тут: http://php.net/manual/en/function.date.php
Дуже просто
date_default_timezone_set('Asia/Kolkata');
$date = date('m/d/Y H:i:s', time());
// Set the default timezone to use. Available since PHP 5.1
date_default_timezone_set('UTC');
// Prints something like: Monday
echo date("l");
// Prints something like: Monday 8th of August 2016 03:12:46 PM
echo date('l jS \of F Y h:i:s A');
// Prints: July 1, 2016 is on a Saturday
echo "July 1, 2016 is on a " . date("l", mktime(0, 0, 0, 7, 1, 2016));
/* Use the constants in the format parameter */
// Prints something like: Wed, 25 Sep 2013 15:28:57 -0700
echo date(DATE_RFC2822);
// Prints something like: 2016-07-01T00:00:00+00:00
echo date(DATE_ATOM, mktime(0, 0, 0, 7, 1, 2000));
Якщо ви Бангладешські, і якщо ви хочете отримати час Даки, скористайтеся цим:
$date = new DateTime();
$date->setTimeZone(new DateTimeZone("Asia/Dhaka"));
$get_datetime = $date->format('d.m.Y H:i:s');
Зазвичай ця функція для дати корисна для всіх: дата ("Y / m / d");
Але час - це щось інше, тому що функція часу залежить або від версії PHP, або від системної дати.
Тому, ймовірно, використовуйте його так, щоб отримати власний часовий пояс:
$date = new DateTime('now', new DateTimeZone('Asia/Kolkata'));
echo $date->format('H:m:s');
Ця функція показує 24 години.
Ось кілька символів, які зазвичай використовуються часом:
a - Низький регістр меридієму та пост меридієма (ранку чи вечора)
Отримайте свій часовий пояс
<?php
date_default_timezone_set("America/New_York");
echo "The time is " . date("h:i:sa");
?>
Перевірте це (необов’язково)
<?php
$d = mktime(11, 14, 54, 8, 12, 2014);
echo "Created date is " . date("Y-m-d h:i:sa", $d);
?>
На побачення
<?php
echo "Today is " . date("Y/m/d") . ;
echo "Today is " . date("Y.m.d") . ;
echo "Today is " . date("Y-m-d") . ;
echo "Today is " . date("l");
?>
Ось кілька символів, які зазвичай використовуються для дат:
.
в date("Y/m/d") . ;
?
$date = date('m/d/Y h:i:s a', time());