181月
Excelのシリアル値を日付に戻す
似非言語で。
C:
-
BOOLEAN うるう年判定(年)
-
IF((年 % 4 == 0) AND (年 % 100 != 0 || 年 % 400 == 0)) {
-
RETURN TRUE
-
} else {
-
RETURN FALSE
-
}
-
}
-
-
INT[] 戻す関数(VAR INT シリアル値)
-
{
-
VAR INT DATA = シリアル値
-
VAR INT 年 = 1900
-
VAR INT 月 = 1
-
VAR INT 日 = 1
-
VAR INT[] MONTH = 配列{31, 28, 31, 30, 31, 30, 31 , 31, 30, 31, 30, 31}
-
VAR INT 仮経過年数, うるう年の数, CNT
-
-
//Excelの脳内だと1900年2月29日があるので、それを補正
-
IF(DATA>= 60) {
-
DATA = DATA - 1
-
}
-
-
仮経過年数 = DATA / 365
-
うるう年の数 = 0
-
-
FOR(CNT = 0; CNT <仮経過年数; CNT++) {
-
IF(うるう年判定(1900 + CNT)) {
-
うるう年の数++
-
}
-
}
-
DATA = DATA - うるう年の数
-
年 = 年 + (DATA / 365)
-
DATA = DATA % 365
-
IF(うるう年判定(年)){
-
MONTH[1]++
-
}
-
-
FOR(CNT = 0; DATA>= MONTH[CNT]; CNT++) {
-
DATA = DATA - MONTH[CNT]
-
}
-
月 = 月 + CNT
-
日 = DATA
-
-
RETURN 配列{年, 月, 日}
-
}
No Comments