2

datetimeMySQLテーブルの列に日付を保存しています。MySqlのUTC_CURRENTDATEを呼び出して、現在の日付を挿入しています。取得すると、次の文字列形式になっています。 "2012-07-24 12:59:58"

次の手順でアクションスクリプトでDateオブジェクトを作成しようとすると、次のようになります。

var dateNum:Number = Date.parse(createDate); // this gives me NaN
var createDate:Date = new Date(dateNum);

Date.parse("2012-07-24 12:59:58")与えるNaN

解決策:ジェイソンのアドバイスに従って、私は次のことを行っています。

'1970-01-01 00:00:00'UTCからの秒数を返すUNIX_TIMESTAMP(CREATE_DATE)を選択します。次に、Actionscriptで次のようにします。

var createDate:Date = new Date();
var offset:Number = createDate.getTimezoneOffset() * 60 * 1000; 
createDate.time = parseInt("1343174921") * 1000 - offset;

これは私に正しい日付を与えます。

4

1 に答える 1

3

もっとエレガントなアプローチがあると確信していますが、明らかに、次のような解析関数を実装できます。

public static function parse(date:String):Date
{
    var split:Array = date.split(" ");
    var splitDate:Array = split[0].split("-");
    var splitTime:Array = split[1].split(":");

    return new Date(splitDate[0],
                    splitDate[1] - 1,
                    splitDate[2],
                    splitTime[0],
                    splitTime[1],
                    splitTime[2]);
}

と呼ばれる:

var date:Date = parse("2012-07-24 12:59:58");

MySQLを処理する代わりにDATETIME、SQLステートメントをタイムスタンプに変換できます。タイムスタンプは、ActionScriptDateコンストラクターがエポックからミリ秒単位で受け入れます。

CASA Libなどのフレームワークには、優れた日付ユーティリティ関数があります。

于 2012-07-24T15:01:17.380 に答える