I have list of dates which has mixed format like:
01-01-13
01-12-13
1/19/2013
1/21/2013
1/21/2013
1/30/2013
02-01-13
02-02-13
02-12-13
2/13/2013
2/23/2013
...
I want to convert that list into list of epoch (to keep it in SQLite db on Android). So I've written a script (based on this) to convert it:
#!/usr/bin/python
import time
with open('date.txt') as f:
mylist = f.read().splitlines()
for date_time in mylist:
if "/" in date_time:
pattern = '%d/%m/%Y'
else:
pattern = '%d-%m-%Y'
epoch = int(time.mktime(time.strptime(date_time, pattern)))
print epoch
But it fails on the first entry with:
Traceback (most recent call last):
File "dateconv.py", line 11, in <module>
epoch = int(time.mktime(time.strptime(date_time, pattern)))
File "/usr/lib/python2.7/_strptime.py", line 467, in _strptime_time
return _strptime(data_string, format)[0]
File "/usr/lib/python2.7/_strptime.py", line 325, in _strptime
(data_string, format))
ValueError: time data '01-01-13\r\n' does not match format '%d-%m-%Y'
fr@Romanowski:~/Downloads$ python dateconv.py
Traceback (most recent call last):
File "dateconv.py", line 12, in <module>
epoch = int(time.mktime(time.strptime(date_time, pattern)))
File "/usr/lib/python2.7/_strptime.py", line 467, in _strptime_time
return _strptime(data_string, format)[0]
File "/usr/lib/python2.7/_strptime.py", line 325, in _strptime
(data_string, format))
ValueError: time data '01-01-13' does not match format '%d-%m-%Y'
EDIT1:
Thanks to ajsp's answer I've changed to:
#!/usr/bin/python
import time
with open('date.txt') as f:
mylist = f.read().splitlines()
for date_time in mylist:
if "/" in date_time:
pattern = '%d/%m/%Y'
else:
pattern = '%d-%m-%y'
epoch = int(time.mktime(time.strptime(date_time, pattern)))
print epoch
But it still fails with:
1356994800
1356994800
1356994800
1356994800
1367359200
1372629600
1372629600
1372629600
1380578400
1385852400
Traceback (most recent call last):
File "dateconv.py", line 12, in <module>
epoch = int(time.mktime(time.strptime(date_time, pattern)))
File "/usr/lib/python2.7/_strptime.py", line 467, in _strptime_time
return _strptime(data_string, format)[0]
File "/usr/lib/python2.7/_strptime.py", line 325, in _strptime
(data_string, format))
ValueError: time data '1/19/2013' does not match format '%d/%m/%Y'
due to missing leading 0 as docs says Month as a zero-padded decimal number
.