【问题标题】:How to unify date formats如何统一日期格式
【发布时间】:2018-08-19 10:12:10
【问题描述】:

我正在尝试从谷歌表格中统一不同的日期格式。我将文件下载为 csv 并开始尝试,但问题是我的格式完全不同。我最初是从 python 开始的,但没有重新格式化所有内容。我尝试使用 php 中的 strtotime(),但它没有给出正确的结果,因为有时格式是 mm-dd-yyyy,有时是 yyyy。我真正关心的是一年的最后两位数字。如果是“2012 年 8 月 3 日”,那么我只需要“12”。这是给我最好结果的python代码,但仍然没有清理所有内容。

import csv

f = open('ViceNews_FullOISData.csv', encoding='latin-1', newline='')
reader = csv.reader(f)

o = open('clean.csv', 'w', encoding='latin-1', newline='')
writer = csv.writer(o)

count = 0
for row in reader:
    if len(row[0].strip()) == 4:
        writer.writerow(row)
        count = count + 1
    else:
        date_d = row[0]
        if date_d[-4:].find("-") != -1 or date_d[-4:].find("/") != -1:
            year_c = date_d[:4] 
        else:
            year_c = date_d[-4:]
        row[0] = year_c
        writer.writerow(row)
        count = count + 1
print (count)
f.close()
o.close()

感谢任何建议。这是谷歌文档上的文件: csv file

【问题讨论】:

    标签: php python-3.x datetime strtotime strptime


    【解决方案1】:

    使用PHP,很简单,你只需要像这样使用函数date():

    // let's say the date field value from your csv is in a var called 
    $csv_date_value
    
    $year = date('y', strtotime($csv_date_value));
    

    编辑 ------

    所以我尝试了一些效果很好的方法,这是我使用的代码:

    $date = new Datetime();
    $date = date_create_from_format('Y', '2010');
    echo date('Y', $date->getTimestamp()); // returns 2010
    echo date('y', $date->getTimestamp()); // returns 10
    

    您可以在php docs上查看日期功能

    【讨论】:

    • 回显日期('y', strtotime("2010"));正在打印 18。我已经尝试过了。
    • 如果您尝试使用 date('Y', strtotime($csv_date_value)); ?它应该返回超过 4 位数的年份,然后你只需要去掉前 2 个
    • 我试过了,我给你举了一个 strtotime 失败的例子。
    猜你喜欢
    • 2018-01-26
    • 1970-01-01
    • 2017-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-20
    • 2023-03-11
    相关资源
    最近更新 更多