【愛知】 「うるう年」認識せず 豊川など3市3町、システム障害で窓口停止
>>267 符号付き32bit整数らしい。なんでかは知らん。
269 :
名無しさん@八周年:2008/03/02(日) 14:22:56 ID:IcBdELT20
270 :
名無しさん@八周年:2008/03/02(日) 16:10:25 ID:z4uEIw/20
オリンピックの年は閏年。これ豆知識な
じつは閏年は対応しなくても問題なかった
400で割れるから
2000年対応は西暦下2桁がメイン
問題は2100年だけだった
閏年に対応してないとかは常識で有り得ないよな
オレはテストデータの日付は20000229とか19000101、29991231とかにしかしないなあ
year % 4 == 0 && year != 2100 でいいってことか?
273 :
名無しさん@八周年:2008/03/02(日) 16:37:15 ID:t6VKIQpc0
とりあえず year%400 == 0 の条件式が無かったとしても
次にこの式が真になる年は2400年だから
俺らが生きてる間は問題ナッシングwwww
孫の孫の孫の…孫は迷惑するかもしれんがwwww
UIコントロールの層でガッチガチに制約かけまくれば楽だ。
キーボードからの直接日付入力を禁止すればさらに効果絶大。
275 :
名無しさん@八周年:2008/03/02(日) 16:49:15 ID:z4uEIw/20
だから年号にしておけといったのに(´・ω・`)
276 :
名無しさん@八周年:2008/03/02(日) 17:14:51 ID:I0StDLuKO
ばか
つーか、日付処理を自前でやるかねw
頭おかしいんじゃね
279 :
名無しさん@八周年:2008/03/02(日) 18:08:52 ID:TlnO4umA0
ぐわ、ここにも閏年バグが!
正直、信じられん。閏年とかは納品前に絶対チェックするはずなのに。
280 :
ナオツィ ◆RlkJ/NAOTU :2008/03/02(日) 18:12:45 ID:8LylsCjeO
どうせ五年程度でリプレイスするんだから、うるう年を共通モジュールに書けばいいのに。
281 :
名無しさん@八周年:2008/03/02(日) 18:16:32 ID:QMdZeIA80
282 :
名無しさん@八周年:2008/03/02(日) 18:17:38 ID:klJXyLI50
>1年前から1年後までの
こんなとき、普通どんな回避方法をとるの?
365日前から、365日後まで、と言う処理でやるの?
「もしうるうどしだったら」を毎回処理するの?
XXXX年YYY日でいいのに、なまじ太陽暦なんか使ってるから混乱が起きる。
XXXX年YYY日方式でも閏年は必要だが月ごとに日数の違う「月」なんて不要になるし
閏年の日数の調整も年末でいいから楽。
一月が三旬のペースで世の中が進んでいるなら月にも意味があるが、七日単位の週が基本になった以上は
もう月なんてものは意味がない。季節感を表すくらいなもの。
だったら素直に旧暦で季節感を味わえばいい。
>>282 日付変換用のサブプログラムを作っておいて、処理を共通化
「今日の日付」と「−1年」を値でサブプログラムに引き渡して、開始日にする
「今日の日付」と「+1年」を値でサブプログラムに引き渡して、終了日にする
開始日≦データ日付≦終了日ならOK、該当しなければNG
今日の日付は1つしかないから、処理の最初に1回だけやればいい
285 :
名無しさん@八周年:2008/03/02(日) 18:28:25 ID:W9pZbRmn0
でも、 year が 1900 を引いた後の値だったらまずいな。 2000 が 100 だから、
year % 400 == 0
は意味がない。
286 :
名無しさん@八周年:2008/03/02(日) 18:34:42 ID:BDM/TOIz0
>>285 その2000年問題、今では懐かしいな。
287 :
名無しさん@八周年:2008/03/02(日) 18:36:10 ID:t6VKIQpc0
( year - year % 400 ) % 400 == 0
で解決
マイクロソフトの作ったわけわからん使い捨てプログラム言語の日付計算ライブラリなんて使わないんじゃないの?
普通。
289 :
名無しさん@八周年:2008/03/02(日) 18:38:06 ID:TlnO4umA0
/* 閏年の判定方法 */
int year, flag; // 0:平年 1:閏年
year = 年度取得関数();
flag = ((year % 4 == 0 + (year % 100 == 0) + (year % 400 == 0)) % 2 == 1); //←これで完璧
290 :
名無しさん@八周年:2008/03/02(日) 18:40:21 ID:6x5s00UM0
どうせ、下請けの下請けに中国人使ったんだろ。
動作確認も中国人で役人はハンコオスだけ。
コスト意識ってのが皆無ってのは怖いね、安く作ればコスト削減って勘違いしてるから。
中国人の方が優秀だろ。
それはそれとして、休日の判定なんかが必要になる場合は100年後くらいまでの各年の情報をテーブルにもってそうなもんだけどな。
役所なら元号の変換も必要になるだろうからそのための情報も。
その方が融通がきくから。
組み込みでもないのにコードで閏年を判定するなんてちょっとよくわからない。
>>271 中途半端な知識があると混乱するかもと思ったが
100で割り切れても400で割り切れる場合は閏年になるまでは知らないとか
でもたいていはカレンダーとかみて気付きそうだな
293 :
名無しさん@八周年:2008/03/02(日) 18:49:18 ID:t6VKIQpc0
>>291 それはメモリの無駄遣いかつ100年後には使い物にならない糞設計なんでは…
294 :
名無しさん@八周年:2008/03/02(日) 18:51:53 ID:trfoKG0pO
この程度で済むのだったら、シャカリキになってPG改修するよりは、今回みたく運用で回避した方が安上がりかもしれない。
295 :
名無しさん@八周年:2008/03/02(日) 18:53:37 ID:kNBo0JZL0
2004年の2月29日は確か日曜日。
このシステム、いつからサービスしてるかわからないけど、
2004年は役所が閉まってたから発覚しなかったのではないかな。
>>284 >>289 なるほど
俺は業務上必要に迫られてVBA(MS-ACCESS)を覚えた、
素人同然の営業部内の社内SE担当なんだけれど、
月単位でしか処理を行わないので、うるう年の処理を考慮したこと無かったので、
どうするんだろうと疑問に思ったんです。
締め日処理で月の最終日を作ることはあるけれど、「指定月の翌月1日の前日」としているし、
うるう年の処理、知らなかった1人です。
>>293 逆に考えるんだ。100年に一回テーブルをメンテするだけで永遠に使えると考えるんだ。
どうせその100年のうちに新しい休日ができたり、休日の日付が変わったりするし
平成だっていつ終わるかわからない。
そのためのカレンダーメンテの機能というのはどうせ必要になるんだから。
298 :
名無しさん@八周年:2008/03/02(日) 19:00:15 ID:W9pZbRmn0
299 :
名無しさん@八周年:2008/03/02(日) 19:02:12 ID:LfaRJdRj0
閏年って何?ってゆとりが本当にいそうで怖い
>>297 まあ休日、年号判定となるとアップデート前提になるだろうけど
これは閏年判定だからな
閏年ってなに?
閏日の存在する年のことだな。
if( year % 400 == 0 ){
intercalaryFlg = true;
}else if( year % 100 == 0 ){
intercalaryFlg = false;
}else if( year % 4 == 0 ){
intercalaryFlg = true;
}else{
intercalaryFlg = false;
}
if(intercalaryFlg){
System.out.println("今年は閏年です");
}else{
System.out.println("今年は閏年ではありません");
}
>>241 その論法では逃げられないようになっている。
年齢計算ニ関スル法律(M35法50)により、「誕生日の前日の終了を以て年齢加算」になるので
2/28終了→3/1の時点で年を取る。
今時、閏年の計算を自前でやるのが間違い
専用のライブラリやクラスを使え
307 :
名無しさん@八周年:2008/03/02(日) 19:28:12 ID:Iy8WhcEi0
/* これが決定版 */
!(y % 4) && y % 100 || !(y % 400) ? /*閏年*/:/*平年*/;
ウチの電波時計も3月3日になってもーた。
一度、秒に変換して日付に戻せばいいと思うよ。
>>305 これ、意外と知られてないね。
4月1日生まれは早生まれとか。
>>297 春分の日と秋分の日は政府が前の年に定めるので
正しくやるためには結局毎年修正が必要。
313 :
名無しさん@八周年:2008/03/02(日) 22:18:15 ID:puiLTh9n0
レベル低すぎだな。
314 :
名無しさん@八周年:2008/03/02(日) 22:52:06 ID:nMOnsmp/P
どうせ役所はこの手の事には至極無能なんだから、
毎年2月末日は他の休日と出勤日入れ替えで対応すればいいじゃない。
4年に一度かならずシステム障害を起こす気か。
316 :
名無しさん@八周年:2008/03/02(日) 23:16:50 ID:CJtqJLy60
>>310 そうなっってしまったのが、法案作成者のうっかりミス。
(プログラムなら、バグと言えるお粗末なカンチガイによるもの)
4/1〜3/31で一学年にするつもりで、「4/1時点で満6歳の子が小学校入学」として法案を提出。
気付いたときには既に法案が通った後だったので、結局そのまま。