Rails で次のような日付を生成する必要があります。
/日付(1294268400000)/
DateTime、to_i、to_json のさまざまな組み合わせを試しましたが、うまくいきませんでした/Date()/
。
/Date(
日付をミリ秒で取得して手動でラップする)/
必要がありますか、それとも組み込みのメソッドがありますか?
Rails で次のような日付を生成する必要があります。
/日付(1294268400000)/
DateTime、to_i、to_json のさまざまな組み合わせを試しましたが、うまくいきませんでした/Date()/
。
/Date(
日付をミリ秒で取得して手動でラップする)/
必要がありますか、それとも組み込みのメソッドがありますか?
試してみてください
new Date(posixMillisecondsHere)
最初。 MDNDate
によると、コンストラクターコンテキストの外部で(つまり、なしで)関数を呼び出すと、オブジェクトnew
ではなく、フォーマットされた日付を含む文字列が常に返されDate
ます。
厳密に言えば、そうするときは、JSONではなくJavaScriptを記述していることになります。JSONにDateオブジェクトを含めることはできません。
RFC4627によると
2.1。値
JSON値は、オブジェクト、配列、数値、文字列、または次の3つのリテラル名のいずれかである必要があります。
false null true
厳密にJSONと見なされるものに日付を入れてから元に戻す場合は、JSONプリミティブ(ウィット、オブジェクト、配列、数値、文字列など)を使用して日付をエンコードする方法を選択する必要があります。
JSONから日付を取り戻したい場合は、JSONを解析するものはすべて、日付のエンコードに使用した規則を理解する必要があります。
これらが信頼できる、および/または十分に公式であるといいのですが。
このようなものはどうですか:
config/en.yml ファイルで:
en:
time:
formats:
json: "/Date(%s%L)/"
ビューよりも:
<%= l(Time.now, :format => :json) %>
json をレンダリングするメソッドでヘルパーにアクセスする必要があることに注意してください。したがって、json の生成に ActiveRecord#to_json メソッドを使用している場合は機能しません。
(ruby 1.9.x) はどうですか?:
Time.now.strftime("/Date(%s%L)/")
=> "/Date(1335280866211)/"
それは UNIX エポック (1970 年 1 月 1 日からの秒数) ですよね? DateTime#strftimeメソッドを使用するのはどうですか?
# Taken from the Ruby documentation
seconds_since_1970 = your_date.strftime("%s")
更新: OK、ms を取得するために使用できるドキュメントによると、ミリyour_date.strftime("%Q")
秒です (ただし、まだ試していません)。