時間数の起点を変換する場合は、fromSerialDateTime()関数、toSerialDateTime()関数を使用します。
主にエクセルファイルから取得した時間数を変換する際に使用します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
Kf(_serialdatetime){ Pe{ /*キーステーションが最初に実行するキーセット*/ N(_main); } } K(_main){ Se{ @s1{ /*Cキーに対してスタイルを設定*/ ~key="C"{ ~border{ ~style="solid"; } } } } U(@s1){ R(#title){ C("データ") C("年") C("月") C("日") C("時") C("分") C("秒") } R(#row1){ C(#source,"0") C(#year) C(#month) C(#day) C(#hour) C(#minute) C(#second) } R(#row2){ C(#source,"1899/12/30 00:00:00") C(#year) C(#month) C(#day) C(#hour) C(#minute) C(#second) } Pe{ /*西暦1899/12/30 00:00:00を起点とする時間数から西暦1年1月1日0時0分0秒を起点する時間数に変換*/ /*KI言語の時間数は西暦1年1月1日0時0分0秒を起点としている*/ /*toTicks("数値型")を入れた場合も同様の動作*/ (float)rowTime1 = fromSerialDateTime((float)#row1#source?); #row1#year?=year(rowTime1); #row1#month?=month(rowTime1); #row1#day?=day(rowTime1); #row1#hour?=hour(rowTime1); #row1#minute?=minute(rowTime1); #row1#second?=second(rowTime1); /*西暦1年1月1日0時0分0秒を起点する時間数から西暦1899/12/30 00:00:00を起点とする時間数に変換/ /*KI言語の時間数は西暦1年1月1日0時0分0秒を起点としている*/ (float)rowTime2 =toSerialDateTime(toTicks(#row2#source?)); #row2#year?=year(rowTime2); #row2#month?=month(rowTime2); #row2#day?=day(rowTime2); #row2#hour?=hour(rowTime2); #row2#minute?=minute(rowTime2); #row2#second?=second(rowTime2); } } } |
serialdatetime.ksf 1.80 KB
実行結果