アカウント名:
パスワード:
「こんなもの、ライブラリを使うまでもない」。そして罠に嵌る。
いやあライブラリ使っても油断してると簡単に罠にはまりますよ。たとえば任意の日付の1ヵ月後、2ヵ月後、…12ヵ月後の日付までを求める処理をJavaで
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");Calendar cal = Calendar.getInstance();for (int i = 0; i < 12; i++) { cal.add(Calendar.MONTH, 1); System.out.println(df.format(cal.getTime()));}
みたいにしちゃうとか。
ここでいうライブラリとは、「任意の日付のnカ月後の日付を求める処理」そのものの事ですよ。
そんなのdateコマンドでとググったら面白いの見つけた。
http://shellscript.sunone.me/date.html [sunone.me]#私もバグ作るとこだったか。
1ヶ月後だとそんなに違和感は無いが、1ヶ月前だとおかしなことになるという話. date -d '2012-03-31 1 months ago' '+%m'
"nヵ月後"だとまず暦日でしょうけど、存在しない日は月末とみなすのか、翌日に繰り下げるのかとか稼働日なのか解釈はいろいろあるし。
鉄道の定期とかは月末とみなしますね。例:1か月定期1/30→2/29まで有効1/31→2/29まで有効2/29→3/28まで有効3/1→3/31まで有効
まぁ、民法がそういう風に定めているからですが。 [e-gov.go.jp]
払い戻しの時はどうするのかとか、素朴に疑問に思った。
「1/30、1/31、...で6ヶ月定期を購入した時、5ヶ月分の支払いを受けられるのは、 何月何日までに払い戻しを受けた時」とか、その変はどうなってるんだろう。
開始日から一ヶ月分?残り日数が5ヶ月分?これに月末の補正が加わる?
法律つながりで。日付の解釈と同じように祝日も国民の祝日に関する法律 [cao.go.jp]で定められていてその運用にみんな従ってるハズなのに、「春分の日と秋分の日は前年の2月の官報がでないとわかりません」と言ったらはぁ?という顔をされました。。。いや、知らないのはいいんすけど、法律できまってることぐらい知っといてよと。
# そんなの計算して近似して注意書きでものせとけよ!と男前なディレクション希望
おれなんか、バレンタインデーのことは毎年2/14を過ぎるまでキッパリ忘れてるぜ!忘れてるだけなんだぞ!ほ、ホントだからなっ!
関東の首都圏で普通に不要となったケースなら、JR東かPASMOだと今年なら2/29に払い戻しを申請しないと無理です。その場合でも、払い戻されるのは元の金額の5/6が返ってくる訳でも、5か月分の定期が買える金額でもありません。
既に利用した日数や払い戻しの理由(買い間違い・区間変更・その他(例えば死亡))や事業者によって異なるので正確性を期するなら問い合わせて下さい。事業者を跨ぐ定期の払い戻しですと、複数の法則が絡みますので返答まで待たされるかもしれません。
具体的な計算式は往復したと仮定して普通の切符の2枚分*利用日数と手数料を定期の額面から引いた形だったり、大体10日(旬)単位で計算だったり、1か月定期分マイナスだったりとバラバラですJR東日本 [jreast.co.jp]小田急(PASMO圏なら大抵これだと思うけど、要確認) [odakyu.jp]
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
物事のやり方は一つではない -- Perlな人
バグの原因 (スコア:0)
うるう年判定なんて、一回プログラム書いてテストしたらまず変更しないだろうし、インターフェイス気に入らないから作り直すっていうようなインターフェイスにはならないと思うのですが。
「小さいから簡単だろw」って思って毎回作り直してるんですかね。
Re: (スコア:0)
「こんなもの、ライブラリを使うまでもない」。
そして罠に嵌る。
Re: (スコア:0)
いやあライブラリ使っても油断してると簡単に罠にはまりますよ。
たとえば任意の日付の1ヵ月後、2ヵ月後、…12ヵ月後の日付までを求める処理をJavaで
みたいにしちゃうとか。
Re: (スコア:1)
ここでいうライブラリとは、「任意の日付のnカ月後の日付を求める処理」そのものの事ですよ。
Re: (スコア:0)
そんなのdateコマンドでとググったら面白いの見つけた。
http://shellscript.sunone.me/date.html [sunone.me]
#私もバグ作るとこだったか。
1ヶ月後だとそんなに違和感は無いが、1ヶ月前だとおかしなことになるという話.
date -d '2012-03-31 1 months ago' '+%m'
"nヵ月後"だとまず暦日でしょうけど、存在しない日は月末とみなすのか、翌日に繰り下げるのかとか稼働日なのか解釈はいろいろあるし。
Re:バグの原因 (スコア:1)
鉄道の定期とかは月末とみなしますね。
例:1か月定期
1/30→2/29まで有効
1/31→2/29まで有効
2/29→3/28まで有効
3/1→3/31まで有効
まぁ、民法がそういう風に定めているからですが。 [e-gov.go.jp]
Re: (スコア:0)
払い戻しの時はどうするのかとか、素朴に疑問に思った。
「1/30、1/31、...で6ヶ月定期を購入した時、5ヶ月分の支払いを受けられるのは、
何月何日までに払い戻しを受けた時」とか、その変はどうなってるんだろう。
開始日から一ヶ月分?残り日数が5ヶ月分?これに月末の補正が加わる?
Re: (スコア:0)
法律つながりで。
日付の解釈と同じように祝日も国民の祝日に関する法律 [cao.go.jp]で定められていてその運用にみんな従ってるハズなのに、「春分の日と秋分の日は前年の2月の官報がでないとわかりません」と言ったらはぁ?という顔をされました。。。いや、知らないのはいいんすけど、法律できまってることぐらい知っといてよと。
# そんなの計算して近似して注意書きでものせとけよ!と男前なディレクション希望
Re: (スコア:0)
おれなんか、バレンタインデーのことは毎年2/14を過ぎるまでキッパリ忘れてるぜ!
忘れてるだけなんだぞ!ほ、ホントだからなっ!
Re:バグの原因 (スコア:1)
関東の首都圏で普通に不要となったケースなら、JR東かPASMOだと今年なら2/29に払い戻しを申請しないと無理です。
その場合でも、払い戻されるのは元の金額の5/6が返ってくる訳でも、5か月分の定期が買える金額でもありません。
既に利用した日数や払い戻しの理由(買い間違い・区間変更・その他(例えば死亡))や事業者によって異なるので正確性を期するなら問い合わせて下さい。
事業者を跨ぐ定期の払い戻しですと、複数の法則が絡みますので返答まで待たされるかもしれません。
具体的な計算式は
往復したと仮定して普通の切符の2枚分*利用日数と手数料を定期の額面から引いた形だったり、
大体10日(旬)単位で計算だったり、
1か月定期分マイナスだったりとバラバラです
JR東日本 [jreast.co.jp]
小田急(PASMO圏なら大抵これだと思うけど、要確認) [odakyu.jp]