Ticket #24325

商品の公開日等でタイムゾーンの扱いがおかしい

Date d'ouverture: 2011-02-08 11:37 Dernière mise à jour: 2011-02-08 11:37

Rapporteur:
Propriétaire:
Type:
État:
Ouvert [Owner assigned]
Composant:
Jalon:
(Aucun)
Priorité:
5 - moyen
Sévérité:
5 - moyen
Résolution:
Aucun
Fichier:
Aucun

Détails

エレコマの日付に対する考え方は、http://doruby.kbmj.com/sakuma85_on_rails/20090602/Rails2_created_at_1 にあるように 「日本時間をそのまま DB に保存する」というものだと理解していますが、これに準じた扱いをしていない箇所がいくつかあるようです。

例えば app/models/product.rb 中で

  def in_sale_term?(now=Time.now)
    sale_start_at <= now && now <= (sale_end_at + 1.day - 1 )
  end
のように判定していますが、販売期間を 2/1~2/28 に設定していて 2/1 6:00 にこの判定を行った場合、
>> public_start_at = DateTime.parse('2011-02-01T00:00:00+00:00')
=> Tue, 01 Feb 2011 00:00:00 +0000
>> now = Time.parse('2011-02-01T06:00:00+09:00')
=> 火  2月 01 06:00:00 +0900 2011
>> public_start_at <= now
=> false
という感じで、期間内にも関わらず期間外と判定されてしまうため、9:00 にならないと公開されないようです。 (Product#in_public_term? も同様です。)

また、Product::csv 内で

          elsif ![:small_resource_path,:medium_resource_path,:large_resource_path,:category_name,:delivery_dates_label,:supplier_name].include?(column)&& Product.columns_hash[column.to_s].type == :datetime
            (product[column] + (60*60*9)).strftime("%Y-%m-%d %H:%M") if product[column]
のように 60*60*9 を足していますが、この処理も不要だと思います。 (というか、DateTime に対する加算は日数で計算されるので、CSV ダウンロードすると日付が 2099 年になっています・・・。)

Ticket History (1/1 Histories)

2011-02-08 11:37 Updated by: miau
  • New Ticket "商品の公開日等でタイムゾーンの扱いがおかしい" created

Attachment File List

No attachments

Modifier

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » Connexion