2

Rails で次のような日付を生成する必要があります。

/日付(1294268400000)/

DateTime、to_i、to_json のさまざまな組み合わせを試しましたが、うまくいきませんでした/Date()/

/Date(日付をミリ秒で取得して手動でラップする)/必要がありますか、それとも組み込みのメソッドがありますか?

4

5 に答える 5

1

試してみてください

new Date(posixMillisecondsHere)

最初。 MDNDateによると、コンストラクターコンテキストの外部で(つまり、なしで)関数を呼び出すと、オブジェクトnewではなく、フォーマットされた日付を含む文字列が常に返されDateます。

厳密に言えば、そうするときは、JSONではなくJavaScriptを記述していることになります。JSONにDateオブジェクトを含めることはできません。

RFC4627によると

2.1。値

JSON値は、オブジェクト、配列、数値、文字列、または次の3つのリテラル名のいずれかである必要があります。

 false null true

厳密にJSONと見なされるものに日付を入れてから元に戻す場合は、JSONプリミティブ(ウィット、オブジェクト、配列、数値、文字列など)を使用して日付をエンコードする方法を選択する必要があります。

JSONから日付を取り戻したい場合は、JSONを解析するものはすべて、日付のエンコードに使用した規則を理解する必要があります。

これらが信頼できる、および/または十分に公式であるといいのですが。

于 2012-04-27T15:21:20.030 に答える
1

このようなものはどうですか:

config/en.yml ファイルで:

en:
  time:
    formats:
      json: "/Date(%s%L)/"

ビューよりも:

<%= l(Time.now, :format => :json) %>

json をレンダリングするメソッドでヘルパーにアクセスする必要があることに注意してください。したがって、json の生成に ActiveRecord#to_json メソッドを使用している場合は機能しません。

于 2012-04-29T09:12:46.933 に答える
1

(ruby 1.9.x) はどうですか?:

Time.now.strftime("/Date(%s%L)/")
=> "/Date(1335280866211)/"
于 2012-04-24T15:22:51.313 に答える
0

この質問をチェックしてください:

c# シリアライズされた JSON 日付を ruby​​ に

...簡単な答えは、parse_dateメソッドを作成することです。

于 2012-03-03T21:15:11.713 に答える
0

それは UNIX エポック (1970 年 1 月 1 日からの秒数) ですよね? DateTime#strftimeメソッドを使用するのはどうですか?

# Taken from the Ruby documentation
seconds_since_1970 = your_date.strftime("%s")

更新: OK、ms を取得するために使用できるドキュメントによると、ミリyour_date.strftime("%Q")秒です (ただし、まだ試していません)。

于 2012-04-24T12:13:29.853 に答える