8.23. diff 期間

  • 書式1: diffyear(date_1,date_2)

  • 書式2: diffyear(time_1,time_2)

  • 書式3: diffmonth(date_1,date_2)

  • 書式4: diffmonth(time_1,time_2)

  • 書式5: diffday(date_1,date_2)

  • 書式6: diffday(time_1,time_2)

  • 書式7: diffhour(time_1,time_2)

  • 書式8: diffminute(time_1,time_2)

  • 書式9: diffsecond(time_1,time_2)

  • 書式10: diffusecond(time_1,time_2)

二つの引数が日付型の場合、 \(date_1\)\(date_2\) の差( \(date_1-date_2\) )を計算し、 その年数(difyear)、月数(diffmonth)、日数(diffday)で計算する。 二つの引数が時刻型の場合、 \(time_1\)\(time_2\) の差( \(time_1-time_2\) )を計算し、 その年数(difyear)、月数(diffmonth)、日数(diffday)、 時間数(diffhour)、分数(diffminute)、秒数(diffsecond)、マイクロ秒数(diffusecond)で計算する。 端数は切り捨てられる。

利用例

importと入力データ(CSV)の準備

 1import nysol.mcmd as nm
 2
 3with open('dat1.csv','w') as f:
 4  f.write(
 5'''id,date
 61,19641010
 72,20000101
 83,20130831
 94,20130901
105,20130902
11''')
12
13with open('dat2.csv','w') as f:
14  f.write(
15'''id,time
161,20120101000000
172,20120101011112
183,
194,20111231235000
205,20111231235000.123456
21''')

月単位での期間

date 項目から2013年9月1日までの経過期間を日数で計算する。

1nm.mcal(c='diffday(0d20130901,$d{date})', a='rsl', i="dat1.csv", o="rsl1.csv").run()
2### rsl1.csv の内容
3# id,date,rsl
4# 1,19641010,17858
5# 2,20000101,4992
6# 3,20130831,1
7# 4,20130901,0
8# 5,20130902,-1

分単位での期間

time 項目から2012年1月1日 00時00分00秒までの経過期間を分単位で計算する。

1nm.mcal(c='diffmonth(0t20120101000000,$t{time})', a='rsl', i="dat2.csv", o="rsl2.csv").run()
2### rsl2.csv の内容
3# id,time,rsl
4# 1,20120101000000,0
5# 2,20120101011112,-1
6# 3,,
7# 4,20111231235000,0
8# 5,20111231235000.123456,0

マイクロ秒単位での期間

time 項目から2012年1月1日 00時00分00秒までの経過期間を秒単位およびマイクロ秒単位で計算する。

1nm.mcal(c='diffsecond(0t20120101000000,$t{time})', a='rsl', i="dat2.csv", o="rsl3.csv").run()
2nm.mcal(c='diffusecond(0t20120101000000,$t{time})', a='rsl', i="dat2.csv", o="rsl4.csv").run()
3### rsl3.csv の内容
4# id,time,rsl
5# 1,20120101000000,0
6# 2,20120101011112,-4272
7# 3,,
8# 4,20111231235000,600
9# 5,20111231235000.123456,599