立即将十分钟换算成不同的时区

时间:2018-09-23 05:54:25

标签: php timezone timestamp

我想将十分钟前的时间戳转换为现在的时间戳,以匹配以下格式:

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 :(得分:0)

请改用date_format函数。您无需使用strtotime函数转换为UNIX时间戳。而是使用DateTime

检查以下内容( 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)
  • 您可以检查更多的格式设置选项here

答案 1 :(得分:0)

这就是我要怎么做?

如果数据在字符串中。这是您唯一需要的代码行:

$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对象,则该对象将能够为您跟踪微秒。