我想将十分钟前的时间戳转换为现在的时间戳,以匹配以下格式:
2018-09-23T04:47:07.237
以下是我要转换为符合上述格式的时间戳:
$now = date('m/d/y g:i a');
$now = strtotime($now);
$ten_minutes_ago = strtotime('-10 minutes');
我该怎么做?谢谢!
答案 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
详细信息:
答案 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对象,则该对象将能够为您跟踪微秒。