Ayas置き場
RSS Feeds
181月

Excelのシリアル値を日付に戻す

似非言語で。

C:
  1. BOOLEAN うるう年判定()
  2.     IF((年 % 4 == 0) AND (年 % 100 != 0 || 年 % 400 == 0)) {
  3.         RETURN TRUE
  4.     } else {
  5.         RETURN FALSE
  6.     }
  7. }
  8.  
  9. INT[] 戻す関数(VAR INT シリアル値)
  10. {
  11.     VAR INT DATA = シリアル値
  12.     VAR INT 年 = 1900
  13.     VAR INT 月 = 1
  14.     VAR INT 日 = 1
  15.     VAR INT[] MONTH = 配列{31, 28, 31, 30, 31, 30, 31 , 31, 30, 31, 30, 31}
  16.     VAR INT 仮経過年数, うるう年の数, CNT
  17.  
  18. //Excelの脳内だと1900年2月29日があるので、それを補正
  19.     IF(DATA>= 60) {
  20.         DATA = DATA - 1
  21.     }
  22.  
  23.     仮経過年数 = DATA / 365
  24.     うるう年の数 = 0
  25.  
  26.     FOR(CNT = 0; CNT <仮経過年数; CNT++) {
  27.         IF(うるう年判定(1900 + CNT)) {
  28.             うるう年の数++
  29.         }
  30.     }
  31.     DATA = DATA - うるう年の数
  32.     年 = 年 + (DATA / 365)
  33.     DATA = DATA % 365
  34.     IF(うるう年判定()){
  35.         MONTH[1]++
  36.     }
  37.  
  38.     FOR(CNT = 0; DATA>= MONTH[CNT]; CNT++) {
  39.         DATA = DATA - MONTH[CNT]
  40.     }
  41.     月 = 月 + CNT
  42.     日 = DATA
  43.  
  44.     RETURN 配列{年, 月, 日}
  45. }

by Ayas 0 comments Category: programming

No Comments