アカウント名:
パスワード:
日本国内だけで利用されるから、タイムゾーン決め打ちで自前の時刻処理を使ってるんだね
今回のはいわゆるタイムゾーンのせいではない。逆に自前処理だったら問題は小さかった。変数の値をファイル保存/読み込み処理を、何も考えずに開発言語の標準ライブラリにお任せしたからこんな問題が起きた。変数の値を自前でファイル保存してればいわゆるタイムゾーンの問題(時差で多少狂う程度の小さな問題)だけで済んだ。
#極論を言えばxamarinのせい!w
それがホントならxamarin何やってんのって感じだな
#3994406 はウソですね。.NETの標準ライブラリ関数の使い方が問題です。
DateTime.ToString メソッド (System) | Microsoft Docs https://docs.microsoft.com/ja-jp/dotnet/api/system.datetime.tostring [microsoft.com]
DateTime.Parse メソッド (System) | Microsoft Docs https://docs.microsoft.com/ja-jp/dotnet/api/system.datetime.parse [microsoft.com]
いずれも引数にロケールを指定して日付⇔文字列の変換が可能です。その指定を省略すると
某社にいたとき、海外支社から上がってきたプログラムがテストを通らなかったことを思い出した現地の単体テストは通っているんだろう、とソースを読んでみたら日付を文字列化して月名で判断していた orz
つまり、ToString()すると英語圏だと "15-Mar-2021" とかになるそこに"Jan"が含まれていれば1月、"Feb"が含まれていれば2月、"Mar"が含まれていれば3月……のように月を調べていた日本語環境だとToString()で "2021/03/15" や "2021年3月15日" になるから英語名が含まれないどの条件にも引っかからないわけ
# なんのことはない、月をDateTime.Monthで取るよう修正した
"Jun"が7月で"Jul"が6月になるのがお約束
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
目玉の数さえ十分あれば、どんなバグも深刻ではない -- Eric Raymond
決め打ち (スコア:0)
日本国内だけで利用されるから、タイムゾーン決め打ちで自前の時刻処理を使ってるんだね
Re: (スコア:0)
今回のはいわゆるタイムゾーンのせいではない。逆に自前処理だったら問題は小さかった。
変数の値をファイル保存/読み込み処理を、何も考えずに開発言語の標準ライブラリにお任せしたからこんな問題が起きた。
変数の値を自前でファイル保存してればいわゆるタイムゾーンの問題(時差で多少狂う程度の小さな問題)だけで済んだ。
#極論を言えばxamarinのせい!w
Re: (スコア:0)
それがホントならxamarin何やってんのって感じだな
Re: (スコア:1)
#3994406 はウソですね。.NETの標準ライブラリ関数の使い方が問題です。
DateTime.ToString メソッド (System) | Microsoft Docs
https://docs.microsoft.com/ja-jp/dotnet/api/system.datetime.tostring [microsoft.com]
DateTime.Parse メソッド (System) | Microsoft Docs
https://docs.microsoft.com/ja-jp/dotnet/api/system.datetime.parse [microsoft.com]
いずれも引数にロケールを指定して日付⇔文字列の変換が可能です。
その指定を省略すると
Re:決め打ち (スコア:1)
某社にいたとき、海外支社から上がってきたプログラムがテストを通らなかったことを思い出した
現地の単体テストは通っているんだろう、とソースを読んでみたら日付を文字列化して月名で判断していた orz
つまり、ToString()すると英語圏だと "15-Mar-2021" とかになる
そこに"Jan"が含まれていれば1月、"Feb"が含まれていれば2月、"Mar"が含まれていれば3月……のように月を調べていた
日本語環境だとToString()で "2021/03/15" や "2021年3月15日" になるから英語名が含まれない
どの条件にも引っかからないわけ
# なんのことはない、月をDateTime.Monthで取るよう修正した
Re: (スコア:0)
"Jun"が7月で"Jul"が6月になるのがお約束