[過去ログ] 【.cmd】 バッチファイルスクリプト %14 【.bat】 (1002レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
546(2): デフォルトの名無しさん [sage] 2021/12/05(日) 06:43:24.27 ID:KxbO9WQf(2/4) AAS
>>543543(3): デフォルトの名無しさん [sage] 2021/12/04(土) 22:30:00.94 ID:Nf0n5MKs(1) AAS
日付の質問です。
CSVの日付部分のセルのデータが壊れていて、5桁の整数になっています。
ググって調べてみたら、どうも1899/12/30が0のシリアル値のようです。
これをYYYY/MM/DDの文字列に変換したいんですが計算式がわかりません。
よろしくお願いします。
変数 n を変換
set /a n+=693899,a=365,b=1461,c=36524,e=146097
set /a f=n/e,g=(n+1)/e-f,n-=f,n+=(n-g)/c,f=n/b,g=(n+1)/b-f,n-=f
set /a n+=(n-g)/a*3+(n-61)/a+(n-122)/a+(n-214)/a+(n-275)/a-306
set /a y=n/372+1,m=n/31%%12+101,d=n%%31+101
set n=%y%/%m:~1%/%d:~1%
各定数は順に、
0/3/1〜1899/12/29の日数(全てグレゴリオ暦)
西暦1年から1,4,100,400年の日数
3〜4,3〜6,3〜9,3〜11,3〜12月の日数
31*12の日数
553: デフォルトの名無しさん [sage] 2021/12/06(月) 16:06:42.92 ID:yBc7foB1(1) AAS
>>546
一旦閏日全部引いて、月が一律31日になるよう加算してるんだね
面白い
(n-61)/a+(n-122)/a+(n-214)/a+(n-275)/a
この式が4-11月の不足分を足してるんだろうけど
なんでこの式で行けるのかイメージ出来ない
554: デフォルトの名無しさん [sage] 2021/12/06(月) 19:19:45.42 ID:+EfoGYZX(1) AAS
>>546
バッチありがとうございます。動作確認しました。助かりました。
>>550550(1): デフォルトの名無しさん [sage] 2021/12/05(日) 11:31:10.50 ID:KxbO9WQf(4/4) AAS
そもそも60以下になるとソフトにより挙動が違う
Excelとは限らない
出どころ確認が先決
スレチの話だけどね
ソフトはLibreOfficeです。後出しですみません。
シリアル値は全て連続です。質問は5桁設定でしたが60以下でもOKです。
>>547547(1): デフォルトの名無しさん [sage] 2021/12/05(日) 09:15:29.34 ID:/JnG12pN(1) AAS
> 1899/12/30が0のシリアル値
まあ実質的にはそれでも間違いでは無いけど
エクセルは一応 1900/01/01 が 1
でも 1900/02/29 が存在するバグ仕様のせいで 1900/03/01 以降 +1 になってしまい 1899/12/31 が 1 のような値になってしまう
1900/03/01 以降の値しか無いなら一律で構わないけれど全てに対応させるには以下の3種必要
・1900/01/01 〜 1900/02/28
・1900/02/29
・1900/03/01 〜
2/29だけ例外で扱って残りは03/01〜の時、通日をフラグで-1する感じかな
0/3/1 を 0 とした値に直して %1 に与えたら以下の式で年月日を出せる
set /a "R=(R4=(R1oo=(R4oo=%~1%%146097)%%36524)%%1461)%%365, Y4oo=%~1/146097, Y1oo=R4oo/36524, Y4=R1oo/1461, Y1=R4/365, L=(Y1oo|Y1)/4, R+=L*365, k=(R*5+2)/153, d=R+1-(306*k+4)/10, f=k/10, m=k+3-f*12, y=400*Y4oo+100*Y1oo+4*Y4+Y1-L+f"
echo %y% / %m% / %d%
詳細な情報ありがとうございます。Excelの場合は注意します。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.041s