日付時刻の国際標準表記

 投稿者:nagram  投稿日:2021年12月31日(金)17時23分41秒
  今年もあとわずかなので、日付時刻に関するプログラムです。
日付や時刻の表記法は様々な様式がありますが、ISO 8601 (日本では JIS X 0301) で規格化されています。
規格に沿った日付時刻を表示する関数を作りました。
皆さま、良いお年をお迎えください。

DECLARE EXTERNAL FUNCTION datetime1$, datetimesec1$, datetime2$, datetimesec2$
!
PRINT "基本形式"
PRINT datetime1$      ! "YYYYMMDDThhmmss+0900"
PRINT datetimesec1$   ! "YYYYMMDDThhmmss.ss+0900"
PRINT "拡張形式"
PRINT datetime2$      ! "YYYY-MM-DDThh:mm:ss+09:00"
PRINT datetimesec2$   ! "YYYY-MM-DDThh:mm:ss.ss+09:00"
END
!
EXTERNAL FUNCTION datetime1$  ! 日付時刻国際標準表記(基本形式)
LET d0$=DATE$
LET t$=TIME$
LET d$=DATE$
IF d$<>d0$ THEN LET t$="00:00:00"  ! 日付更新考慮
LET datetime1$=d$&"T"&t$(1:2)&t$(4:5)&t$(7:8)&"+0900"
END FUNCTION
!
EXTERNAL FUNCTION datetimesec1$  ! 日付時刻国際標準表記(基本形式,小数秒)
LET t0=TIME
LET d$=DATE$
LET t=TIME
IF t<t0 THEN LET d$=DATE$  ! 日付更新考慮
LET h=INT(t/3600)
LET hm$=RIGHT$("0"&STR$(h),2)&RIGHT$("0"&STR$(INT((t-3600*h)/60)),2)
LET t$=USING$("%%.##",MOD(t,60))
! LET t1=MOD(t,60)  ! 秒の小数部末尾の"0"を記述しない
! IF t1>=10 THEN LET t$=STR$(t1) ELSE LET t$="0"&STR$(t1)
! IF t1<1 THEN LET t$="0"&t$
LET datetimesec1$=d$&"T"&hm$&t$&"+0900"
END FUNCTION
!
EXTERNAL FUNCTION datetime2$  ! 日付時刻国際標準表記(拡張形式)
LET d0$=DATE$
LET t$=TIME$
LET d$=DATE$
IF d$<>d0$ THEN LET t$="00:00:00"  ! 日付更新考慮
LET datetime2$=d$(1:4)&"-"&d$(5:6)&"-"&d$(7:8)&"T"&t$&"+09:00"
END FUNCTION
!
EXTERNAL FUNCTION datetimesec2$  ! 日付時刻国際標準表記(拡張形式,小数秒)
LET t0=TIME
LET d$=DATE$
LET t=TIME
IF t<t0 THEN LET d$=DATE$  ! 日付更新考慮
LET h=INT(t/3600)
LET hm$=RIGHT$("0"&STR$(h),2)&":"&RIGHT$("0"&STR$(INT((t-3600*h)/60)),2)
LET t$=USING$("%%.##",MOD(t,60))
! LET t1=MOD(t,60)  ! 秒の小数部末尾の"0"を記述しない
! IF t1>=10 THEN LET t$=STR$(t1) ELSE LET t$="0"&STR$(t1)
! IF t1<1 THEN LET t$="0"&t$
LET datetimesec2$=d$(1:4)&"-"&d$(5:6)&"-"&d$(7:8)&"T"&hm$&":"&t$&"+09:00"
END FUNCTION
 

戻る