2

データベースからオブジェクトをフェッチした後

Object.select('week(created_at) as week, year(created_at) as year')

0 から 53 までの週を返し、そこから Date オブジェクトを作成します

Date.commercial(x.year,x.week,1)

0 と 53 の週番号による「無効な日付」エラーを報告しています。

私もこれを試しました。

Date.strptime("#{x.year}-#{x.week+1}-1","%Y-%W-%w")

ただし、x.week+1 (例: 53+1) によってもクラッシュします。1行解を探す

4

3 に答える 3

0

使い方が間違っていると思います

私はこれを(here)から見つけました。

念のため、Ruby バージョンと x.year および x.week の出力を送信してください。

コマーシャル(y=-4712, w=1, d=1, sg=ITALY) クリックしてソースを切り替え

年 y、週 w、および曜日 d で指定された商業日の新しい Date オブジェクトを作成します。

月曜日は曜日 1 です。日曜日は曜日 7 です。

w と d は負の値にすることができます。その場合、それぞれ年末と週の終わりから逆算します。ただし、ラップアラウンドは実行されず、無効な値によって ArgumentError が発生します。

y のデフォルトは -4712、w のデフォルトは 1、d のデフォルトは 1 です。これはユリウス日番号の 0 日目です。

sg は改暦の日を指定します。強調されたテキスト
于 2013-01-11T09:29:12.707 に答える
0

に 1 を追加しないx.weekでくださいstrptime

于 2013-01-11T09:29:22.207 に答える