Конвертировать сейчас и десять минут назад в другой часовой пояс - PullRequest
0 голосов
/ 23 сентября 2018

Я хотел бы преобразовать метки времени десять минут назад и теперь, чтобы они соответствовали следующему формату:

2018-09-23T04:47:07.237

Вот метки времени, которые я хотел бы преобразовать, чтобы соответствовать вышеуказанному формату:

$now = date('m/d/y g:i a');
$now = strtotime($now);
$ten_minutes_ago = strtotime('-10 minutes');

Как я могу это сделать?Спасибо!

Ответы [ 2 ]

0 голосов
/ 23 сентября 2018

Вот как я буду делать то, о чем вы просите.

Если ваши данные представлены в виде строки.Вот единственная строка кода, которая вам нужна:

$date = date('m/d/y g:i a'); //Gets a date string.
echo substr(date('Y-m-d\TH:i:s.u', strtotime($date . ' -10 minutes')), 0, -3); // PHP < 7.0.0

//echo date('Y-m-d\TH:i:s.v', strtotime($date . ' -10 minutes')); //PHP > 7.0.0  

Это даст:

Пример.

09/23/18 12:13

К

2018-09-23T00: 03: 00.000

Здесь нужно отметить одну вещь.Микросекунды всегда будут нулями, если ваша исходная дата ввода - это строка в указанном вами формате m/d/y g:i a.Причина в том, что в строке даты нет информации о миллисекундах.

Если вы введете дату ввода в качестве объекта dateTime, объект сможет отслеживать микросекунды за вас.

0 голосов
/ 23 сентября 2018

Используйте взамен date_format .Вам не нужно преобразовывать метку времени в UNIX с помощью функции strtotime.Вместо этого используйте DateTime library

Проверьте следующее ( Rextester Demo ):

$now = new DateTime(); // create a datetime object
$sub = new DateInterval("PT10M"); // Interval of 10 mins
$ten_minutes_ago = new DateTime();
$ten_minutes_ago->sub($sub); // subtract 10 minutes

// changed formats
$now_changed = date_format($now, DATE_ISO8601);
$ten_minutes_ago_changed = date_format($ten_minutes_ago, DATE_ISO8601); 

// print output
echo $now_changed; //2018-09-23T02:58:25-0400
echo $ten_minutes_ago_changed; // 2018-09-23T02:48:25-0400

Подробности:

  • Функция date_format () возвращает дату, отформатированную в соответствии с указанным форматом.
  • DATE_ISO8601 - ISO-8601 (пример: 2013-04-12T15: 52: 01+0000)
  • Вы можете проверить дополнительные параметры форматирования здесь .
...