читаемая дата из отрицательной длинной метки времени с пользовательским базовым годом

Я видел несколько вопросов и ответов по StackOverflow, охватывающих сценарий, в котором временные метки были основаны на эпохе Unix, но изо всех сил пытались объединить решения и превратить их в рабочее решение для данных и настраиваемого базового года, в котором я был в комплект поставки.

<?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 и т. д.).

Я пробовал так много комбинаций добавления или вычитания StrToTime значение результата 2013-01-01 а также 1899-12-30и умножение и деление на 10 что я просто потерял трек сейчас. Например:

$iTimeStamp -= strtotime( '2013-01-01' );
$iTimeStamp += strtotime( '1899-12-30' );
$iTimeStamp = round( $iTimeStamp / 10 );

Пока что, хотя самое близкое, что у меня есть, это даты 2012 года, хотя часть даты 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

На данный момент любая помощь приветствуется! Спасибо.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]