0

PHPを使用してQuickbooksMyTimeimtファイルを処理しようとしています。imtファイルはプレーンテキストのXMLファイルです。PHP SimpleXMLライブラリを問題なく使用できましたが、次の1つだけです。

My Time 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>

attritube [@ name='start']の値は次のとおりです。

308073428.00000000000000000000

これはExcelベースのストレージ方法ではありません308,073,428は1900-01-00から日数が多すぎて、Unixエポックでもありません。

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

4

1 に答える 1

0

Quickbooks MyTimeimtがOSXCoreDataの一部のバージョンを使用してアプリケーション情報を保存しているようです。しばらく調べてみると、Core Data/Cocoaはエポックの開始時刻として2000-01-0100: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');
?>

これは正しい日付を取得するのに十分ですが、有効な時間、小数点の右側の値を処理する方法がまだわかりません。

于 2011-01-06T05:47:38.380 に答える