1

私は Windows インデックス検索を PHP と共に使用して、何千ものファイル内を検索しています。

PHP COMクラスを使用して動作させました:

$conn = new COM("ADODB.Connection") or die("Cannot start ADO");
$recordset = new COM("ADODB.Recordset");

$conn - > Open("Provider=Search.CollatorDSO;Extended Properties='Application=Windows';");


$recordset - > Open("SELECT System.ItemName, System.DateModified FROM  SYSTEMINDEX  WHERE DIRECTORY='file:C:/xxxx/' AND CONTAINS('xxxx')", $conn);

$recordset - > MoveFirst();

while (!$recordset - > EOF) {
    echo $recordset - > Fields - > Item("System.ItemName") - > Value."\n";
    $recordset - > MoveNext();
}

各要素のフィールドを取得してDateModifiedいますが、その形式がシステム構成に依存することに気付きました。Windows のコントロール パネルから設定することができます。

スクリプトを実行したいすべてのシステムでコントロールパネルを使用して変更する必要がないように、目的の形式で取得する方法があるかどうか疑問に思っています。

オブジェクトにプロパティがあることに気付きましたが、formatAsそれを変更する方法がわかりません。また、ドキュメントも完全ではありません。

ありがとう。

4

1 に答える 1

1

variant_date_to_timestampを使用して VT_DATE オブジェクトを UNIX タイムスタンプに変換し、それをdateでフォーマットすることができます。これは、コントロール パネルの日付フォーマットに関係なく機能するはずです。

$format = "Y-m-d";
$object = $recordset->Fields->Item("System.DateModified")->Value;
$timestamp = variant_date_to_timestamp($object);
echo date($format, $timestamp) . "\n";
于 2014-02-18T17:00:57.353 に答える