我在StackOverflow上看到了许多问题和答案,其中包括时间戳基于Unix Epoch但是一直在努力将这些解决方案结合起来并将其修改为数据和自定义基准年的工作解决方案已经供应了。
<?php
date_default_timezone_set( 'Europe/London' );
function TransformDate( $iTimeStamp ) {
/* Insert transform code here */
$dt = new DateTime( '@' . $iTimeStamp );
return $dt->format( 'Y-m-d H:i:s' );
}
/* These timestamps should be between Sep-2014 and Jan-2015 */
$aTest = array( '-1554460973', '-1554427073', '-1554142396', '-1554139421' );
foreach( $aTest as $i ) echo( $i . ' - ' . TransformDate( $i ) . "\r\n" );
我有助于处理这些时间戳的唯一信息是它们基于年2013
,每秒10
个刻度,并且数据最初来自Microsoft Jet数据库(所以我可以想象类似的数据存储类型到Microsoft Access等。)
我尝试了很多组合添加或减去2013-01-01
和1899-12-30
的 strtotime 结果值,并乘以10
乘以{I}现在简单地跟踪。例如:
$iTimeStamp -= strtotime( '2013-01-01' );
$iTimeStamp += strtotime( '1899-12-30' );
$iTimeStamp = round( $iTimeStamp / 10 );
到目前为止,尽管我最接近的是2012年的日期,但截止日期为12月31日14:38,部分可能是正确的:
$iTimeSinceBase = ( $iTimeStamp - strtotime( '2013-01-01' )) / 86400;
$iTimeStamp = strtotime( '2013-01-01' ) + $iTimeSinceBase;
输出为:
-1554460973 = 2012-12-31 14:38:22
-1554427073 = 2012-12-31 14:38:22
-1554142396 = 2012-12-31 14:38:26
-1554139421 = 2012-12-31 14:38:26
此时欢迎任何帮助!谢谢。