ACCESSでは"09/10/27"という日付の文字列を 以下のコードでフォーマットすると、"2009/10/27"という結果になるが、
Dim strFormattedDate As String
strFormattedDate = $Format("09/10/27", "yyyy/mm/dd")
Javaで同様の処理を行うと、strFormattedDate の値が"0009/10/27" となってしまう。
SimpleDateFormat dateFormat =
(SimpleDateFormat)DateFormat.getDateInstance();
dateFormat.applyPattern("yyyy/MM/dd");
Date date = DateFormat.getDateInstance().parse("09/10/27");
String formattedDate = dataFormat.format(date);
09年という情報が入ってきた時に
ACCESSは2009年
Javaは 9年
と判定するのが今回の違いの原因なのだが、人間的な感覚ではACCESSが正しいが、システム仕様としてはJavaの方が正しくなる。
ちなみにACCESSの方は基準が1930年になっているようで、
ACCESSのコードで年数を増やしていくと、"30/01/01"から "1930/01/01"となってしまう。
さすがにそこまで同じシステムを使うとは思えないが、こういった仕様の点からも脱ACCESSは進めていかないといけない。
仕様としては
・入力欄を YYYY/MM/DDの4ケタにする
・ACCESSと同じように30年辺りで区切るようにする
のどちらかになるが、どちらがうちのシステムとしてあるべきか検討しないといけない。
0 件のコメント:
コメントを投稿