Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有PHPs date()函数的16位时间戳_Php_Xml_Timestamp - Fatal编程技术网

带有PHPs date()函数的16位时间戳

带有PHPs date()函数的16位时间戳,php,xml,timestamp,Php,Xml,Timestamp,如何在PHP的date()函数中使用以下16位时间戳(来自XML文件) 1295076698126000 // 15-01-2011 08:31:38.126 1286697695521000 // 10-10-2010 10:01:35.521 这些时间戳以微秒为单位。但是,由于PHP使用整数作为带有date()的秒时间戳,因此无法获得微秒值。通过将时间戳除以一百万(一百万微秒=1秒),并将商传递给date(),您仍然可以打印日期的其余部分: EDIT:Hacky,但您可以执行手动算术来

如何在PHP的
date()
函数中使用以下16位时间戳(来自XML文件)

1295076698126000  // 15-01-2011 08:31:38.126
1286697695521000  // 10-10-2010 10:01:35.521

这些时间戳以微秒为单位。但是,由于PHP使用整数作为带有
date()
的秒时间戳,因此无法获得微秒值。通过将时间戳除以一百万(一百万微秒=1秒),并将商传递给
date()
,您仍然可以打印日期的其余部分:

EDIT:Hacky,但您可以执行手动算术来获取毫秒数,并将其作为一种解决方法单独输出,如下所示:

$xml_timestamp = 1295076698126000;
$seconds = $xml_timestamp / 1000000;
$microseconds = $seconds - floor($seconds);
$seconds = floor($seconds);

// 1 millisecond = 1000 microseconds
// Milliseconds, because your desired output is 3 decimal places long, not 6
$milliseconds = round($microseconds * 1000);

$format = 'd-m-Y H:i:s.' . sprintf('%03d', $milliseconds);
echo date($format, $seconds);
对于可重用性,
DateTime
类是一个很好的选择。或者,自定义函数:

function date_milliseconds($format, $timestamp = NULL) {
    $seconds = ($timestamp === NULL) ? microtime(true) : $timestamp / 1000000;
    $microseconds = $seconds - floor($seconds);
    $seconds = floor($seconds);
    $milliseconds = round($microseconds * 1000);

    $format = preg_replace('/(?<!\\\\)u/', sprintf('%03d', $milliseconds), $format);
    return date($format, $seconds);
}

echo date_milliseconds('d-m-T H:i:s.u', floatval($xml_timestamp));
函数日期\u毫秒($format,$timestamp=NULL){
$seconds=($timestamp===NULL)?微时间(true):$timestamp/1000000;
$microseconds=$seconds-floor($seconds);
$seconds=地板($seconds);
$毫秒=整数($微秒*1000);

$format=preg_replace('/(?这些时间戳以微秒为单位。但是,由于PHP使用整数作为带有
date()
的秒数时间戳,您将无法获得微秒值。您仍然可以通过将时间戳除以一百万(一百万微秒=1秒)来打印日期的其余部分,并将商传递给
date()

EDIT:Hacky,但您可以执行手动算术来获取毫秒数,并将其作为一种解决方法单独输出,如下所示:

$xml_timestamp = 1295076698126000;
$seconds = $xml_timestamp / 1000000;
$microseconds = $seconds - floor($seconds);
$seconds = floor($seconds);

// 1 millisecond = 1000 microseconds
// Milliseconds, because your desired output is 3 decimal places long, not 6
$milliseconds = round($microseconds * 1000);

$format = 'd-m-Y H:i:s.' . sprintf('%03d', $milliseconds);
echo date($format, $seconds);
对于可重用性,
DateTime
类是一个很好的选择。或者,自定义函数:

function date_milliseconds($format, $timestamp = NULL) {
    $seconds = ($timestamp === NULL) ? microtime(true) : $timestamp / 1000000;
    $microseconds = $seconds - floor($seconds);
    $seconds = floor($seconds);
    $milliseconds = round($microseconds * 1000);

    $format = preg_replace('/(?<!\\\\)u/', sprintf('%03d', $milliseconds), $format);
    return date($format, $seconds);
}

echo date_milliseconds('d-m-T H:i:s.u', floatval($xml_timestamp));
函数日期\u毫秒($format,$timestamp=NULL){
$seconds=($timestamp===NULL)?微时间(true):$timestamp/1000000;
$microseconds=$seconds-floor($seconds);
$seconds=地板($seconds);
$毫秒=整数($微秒*1000);

$format=preg_replace('/(?请注意,根据Edward Rudd在
date()
手册页面上的评论,您可以在
DateTime
对象中使用“u”:但这实际上不是很有用,因为我看不到设置微秒时间戳的简单方法(
setTimestamp()
似乎将输入转换为int)。你能使代码动态吗?
echo$timestamp*1
总是给出相同的数字(2147483647),请参阅:@kristofer:PHP的哪个版本?当它超过32位有符号整数限制时,PHP会将
$timestamp
变成浮点。当前版本v5.3.5-使用SimpleXML解析XML。如果
var_dump()
使用SimpleXML获取时间戳后立即获得时间戳您得到了什么?请注意,根据Edward Rudd在
date()
手册页上的评论,您可以将“u”与
DateTime
对象一起使用:但这实际上不是很有用,因为我看不到设置微秒时间戳(
setTimestamp()的简单方法)
似乎将输入转换为int)。您能使代码动态吗?
echo$timestamp*1
总是给出相同的数字(2147483647),请参阅:@Kristofer:PHP的哪个版本?当超过32位带符号整数限制时,PHP会将
$timestamp
转换为浮点数。当前版本为v5.3.5-使用SimpleXML解析XML。如果使用SimpleXML获取时间戳后立即使用
var_dump()
,您会得到什么?