2011-01-06 16 views
0

PHPを使用してQuickbooks My Time imtファイルを処理しようとしています。 imtファイルはプレーンテキストのXMLファイルです。私は問題なくPHPのSimpleXMLライブラリを使用することができたが、1つました:Quickbooksの奇数datetime表現My Time files

マイ・タイムのXMLファイルの日時の数値表現は、私が前に見たことがないものです:

<object type="TIMEPERIOD" id="z128"> 
    <attribute name="notes" type="string"></attribute> 
    <attribute name="start" type="date">308073428.00000000000000000000</attribute> 
    <attribute name="running" type="bool">0</attribute> 
    <attribute name="duration" type="double">3600</attribute> 
    <attribute name="datesubmitted" type="date">310526237.59616601467132568359</attribute> 
    <relationship name="activity" type="1/1" destination="ACTIVITY" idrefs="z130"></relationship> 
</object> 

することができます

308073428.00000000000000000000

これは、エクセルベースの方法ではありません。attritube [名@ = 'スタート']が値を持っていることがわかりストレージの308,073,428は、1900年1月1日から数日であり、Unix Epochでもありません。

私の質問は、誰もこのタイプの日時表現を見たことがありますか?

答えて

0

MyBookは、アプリケーション情報を保存するためにOS X Core Dataの一部のバージョンを使用しています。しばらく掘り下げた後、私はCore Data/Cocoaが2000年1月1日00:00:00をエポックの開始時間として使用することを発見しました。したがって、それは単に正しい日付を取得するにはエポックに秒を追加するだけです:

<?php 
    $start_as_int = (int) $node; 
    $dt = new DateTime('2010-01-01 00:00:00'); 
    $dt->add(new DateInterval('PT'.$start_as_int.'S')); 
    print $dt->format('m/d/Y'); 
?> 

これは正しい日付を取得するのに十分良いですが、しかし、私はまだに値をどのように処理するか定かではありませんよ有効な時間の小数点以下の桁数。