使用Unix将日期转换为时间戳
我有一个带有不同日期的date.csv
文件,我无法将其转换为时间戳。 例如使用Unix将日期转换为时间戳
date.csv
有下列日期: -
Mar 24 2014
Apr 1 2014
Aug 25 2014
我想上面的日期转换为: -
03/24/2014 00:00:00
04/01/2014 00:00:00
08/25/2014 00:00:00
即MM/DD/YYYY 00:00:00格式,从而将输出存储在新文件中,即date1.csv
。
我该怎么做?
您可以使用GNU date命令来执行转换:
date +"%m/%d/%Y %H:M:%S" -d "Mar 24 2014"
03/24/2014 00:00:00
的问题没有明确规定可以使用什么工具,但是这是在Python碱性溶液来处理在CSV文件中读取,转换日期,并将其输出到另一个CSV文件:
#!/usr/bin/python
import csv
from datetime import datetime
import sys
DATE_COLUMN = 3 # Or whatever column has the date
input_file = sys.argv[1]
output_file = sys.argv[2]
with open(input_file) as i_f:
reader = csv.reader(i_f)
with open(output_file, 'w') as o_f:
writer = csv.writer(o_f)
for row in reader:
date = datetime.strptime(row[DATE_COLUMN], "%h %d %Y")
row[DATE_COLUMN] = date.strftime("%m/%d/%Y %H:M:%S")
writer.writerow(row)
用法:
python csv_date_converter.py input_file output_file
您将如何将每行的相关字段映射到输出中? – 2014-08-27 18:03:59
你的意思是从CSV中的其他字段拉出来?您可以使用sed/awk,但我可能会建议使用CSV库,如Python标准库中的['csv'](https://docs.python.org/2/library/csv.html)。 – bjmc 2014-08-27 18:06:25
粗略地说,传递给'date'命令的数据是CSV文件中的一个字段,因此您需要在每行输入中调用一次'date'命令,从行中提取日期字段,以及然后用替代日期值重写该行。你的建议映射出一个价值 - 整个任务的重要组成部分,但不是整个任务。 – 2014-08-27 18:10:27
哈你有没有尝试过使用'date'?阅读联机帮助页。您的csv是csv还是空格分隔的字段? – Daenyth 2014-08-27 17:59:05
日期是否出现在文件的一列中 - 比如第3列 - 并且您需要某种方式来转换日期?对可以使用的工具有任何限制吗?例如,Perl有[Text :: CSV](http://search.cpan.org/perldoc?Text%3A%3ACSV)来读取和写入CSV文件,[POSIX :: strptime](http:// search .cpan.org/perldoc?POSIX%3A%3Astrptime)和[POSIX :: strftime](http://perldoc.perl.org/POSIX.html#strftime)。请注意,可能需要安装Text :: CSV和POSIX :: strptime。 – 2014-08-27 18:02:53