在php中获得带有second.decimal-fraction-of-second日期的ISO 8601?

new*_*bie 10 php datetime

我回应这个:

  php> echo date("Y-m-d\TH:i:s");
      2011-05-27T11:21:23
Run Code Online (Sandbox Code Playgroud)

如何使用date函数获取此日期格式:

2011-01-12T14:41:35.7042252+01:00 (例如)

35.7042252 => seconds.decimal-fraction-of-second

我试过了:

php> function getTimestamp()
 ... {
 ...         return date("Y-m-d\TH:i:s") . substr((string)microtime(), 1, 8);
 ... }

php> echo getTimestamp();
2011-05-27T15:34:35.6688370 // missing +01:00 how can I do?
Run Code Online (Sandbox Code Playgroud)

dec*_*eze 12

date('Y-m-d\TH:i:s.uP')
Run Code Online (Sandbox Code Playgroud)

u在PHP 5.2.2中添加了微秒.对于早期或(仍然)破坏的版本(请参阅注释):

date('Y-m-d\TH:i:s') . substr(microtime(), 1, 8) . date('P')
Run Code Online (Sandbox Code Playgroud)

或者,为了避免两次调用date:

date(sprintf('Y-m-d\TH:i:s%sP', substr(microtime(), 1, 8)))
Run Code Online (Sandbox Code Playgroud)

  • 不要这样做,你生成两个或三个不同的时间戳然后组合它们.即使是"避免两次调用日期"版本也分别调用date()和microtime(),这些将返回不同的系统时间.见下文. (3认同)