计算两个字符串日期之间的日期数并返回整数
我有一个.txt格式的数据文件,里面有一列是日期,内容像这样:
1181206,3560076,2,01/03/2010,46,45,M,F
2754630,2831844,1,03/03/2010,56,50,M,F
3701022,3536017,1,04/03/2010,40,38,M,F
3786132,3776706,2,22/03/2010,54,48,M,F
1430789,3723506,1,04/05/2010,55,43,F,M
2824581,3091019,2,23/06/2010,59,58,M,F
4797641,4766769,1,04/08/2010,53,49,M,F
我想计算每个日期和2010年3月1日之间的天数,然后把日期替换成天数的偏移量,比如{0, 2, 3, 21...},最后的结果应该像这样:
1181206,3560076,2,0,46,45,M,F
2754630,2831844,1,2,56,50,M,F
3701022,3536017,1,3,40,38,M,F
3786132,3776706,2,21,54,48,M,F
1430789,3723506,1,64,55,43,F,M
2824581,3091019,2,114,59,58,M,F
4797641,4766769,1,156,53,49,M,F
我尝试了很久,这让我非常沮丧。我试过用datetime.datetime.strptime('01/03/2010', "%d/%m/%Y").date()方法把日期转换成日期时间格式,然后再减去两个日期,但结果是比如'3 days, 0:00:00',我就是无法得到单纯的数字!
3 个回答
1
根据你的输入(有点啰嗦...)
#!/usr/bin/env python
import datetime
with open('input') as fd:
d_first = datetime.date(2010, 03, 01)
for line in fd:
date=line.split(',')[3]
day, month, year= date.split(r'/')
d = datetime.date(int(year), int(month), int(day))
diff=d - d_first
print diff.days
结果是
0
2
3
21
64
114
156
可以看看 pleac,里面有很多使用Python的日期示例。
4
两个日期之间的差距叫做 时间差。任何一个时间差的对象都有一个叫做天数的属性,这个属性是你想要的整数值。
1
这其实很简单。用你提供的代码:
date1 = datetime.datetime.strptime('01/03/2010', '%d/%m/%Y').date()
date2 = datetime.datetime.strptime('04/03/2010', '%d/%m/%Y').date()
你会得到两个日期时间对象。
(date2-date1)
这个会给你时间差。你犯的错误是把这个时间差转换成了字符串。时间差对象有一个天数属性。所以,你可以通过这个属性来获取天数:
(date2-date1).days
这样就能生成你想要的输出了。