这是一个与编程相关的数据问题,但我不确定在哪里发布它。如果它更适合其他地方,modders可以自由移动它。
我试图将银行导出的CSV导入GNUcash,但GNUcash只采用特定的日期格式,如YYYY-MM-DD(1999-05-16),而我的银行只导出为YYYYMMDD(19990516)
我不确定将文件转换为最简单/最方便的方法。编写脚本和/或使用复杂的正则表达式似乎过多但可能是必要的?
我尝试将其加载到LibreOffice Calc和MS Excel中,但无法找到任何转换选项;使用自定义YYYYMMDD格式格式化单元格会破坏输出。我希望有一种更简单的方法来解决这个问题。如果没有,我可能最终会编写该脚本并将其放在某处。
答案 0 :(得分:1)
您可以使用Notepad2打开CSV,勾选regular expression search
并替换。
如果日期是用双引号和逗号之间写的:
,"([12][90][901]\d)([01]\d)([0123]\d)",
与
,"\1-\2-\3",
对于任何更复杂的东西,Excel宏或Ruby都可以帮到你。
答案 1 :(得分:1)
GNUcash是对的 - ISO格式更好。
但只是任何脚本工具或语言都有相应的功能。在最基本的层面上,我们有GNU日期:
$ date --date=20161223 +%Y-%m-%d
2016-12-23
$
无论你最终做什么,请不要使用正则表达式来表示日期。计算日期和时间可能很棘手,如果周围没有未成年人,可能需要更多更咸的语言。使用可以解析和格式化日期的库。 许多可供选择。
我的第二个建议是转换csv。如果您可以/想要使用R,anytime包读取日期(和日期时间)而没有格式字符串,并且日期的默认格式就是您需要的。 Python也有能力的库,大多数其他脚本(和编译)语言也是如此。
答案 2 :(得分:0)
您可以使用LibreOffice Calc或MS Excel打开文件,然后使用公式转换日期列。
让我们说在A1中你有19990516,然后使用以下公式转换 =日期(左(α-1,4),中期(A1,5,2),右(A1,2))