如何使用linux date命令解析ISO8601日期

亚历克斯·弗兰西奇

我正在尝试使用date命令生成date命令本身可以解释的文件时间戳。但是,date命令似乎不喜欢它自己的输出,并且我不确定如何解决此问题。例子:

sh-4.2$ date
Fri Jan  3 14:22:19 PST 2014
sh-4.2$ date +%Y%m%dT%H%M
20140103T1422
sh-4.2$ date -d "20140103T1422"
Thu Jan  2 23:22:00 PST 2014

date似乎在解释字符串,偏移量为15小时。有任何已知的解决方法吗?

编辑:这不是显示问题:

sh-4.2$ date +%s
1388791096
sh-4.2$ date +%Y%m%dT%H%M
20140103T1518
sh-4.2$ date -d 20140103T1518 +%s
1388737080
sh-4.2$ python
Python 3.3.3 (default, Nov 26 2013, 13:33:18) 
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 1388737080 - 1388791096
-54016
>>> 54016/3600
15.004444444444445
>>> 

当显示为unix时间戳时,它仍然关闭15个小时。

编辑#1

也许我应该以不同的方式提出这个问题。说我有以下形式的ISO8601基本时间戳的列表:

  • YYYYMMDDThhmm
  • YYYYMMDDThhmmss

将它们转换为相应的Unix时间戳的最简单方法是什么?

例如:

- 20140103T1422   = 1388787720
- 20140103T142233 = 1388787753
约翰1024

您要求“已知的解决方法”。这是一个简单的例子:

$ date -d "$(echo 20140103T1422 | sed 's/T/ /')"
Fri Jan  3 14:22:00 PST 2014

这用于sed用空格替换“ T”。结果是一种可以date理解的格式

如果我们在ISO8601日期上增加秒数,则date需要进行更多更改:

$ date -d "$(echo 20140103T142211 | sed -r 's/(.*)T(..)(..)(..)/\1 \2:\3:\4/')"
Fri Jan  3 14:22:11 PST 2014

在上面,sed用空格替换“ T”,并将HHMMSS分隔为HH:MM:SS。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用UTC时区解析ISO8601日期字符串为最新日期

如何比较ISO8601格式的日期?

JavaScript:哪些浏览器支持使用Date.parse解析ISO-8601日期字符串

Joda解析GMT时区中的ISO8601日期

如何使用JSTL将日期显示为ISO8601?

使用SPRING BOOT时如何在RequestParams中保留ISO 8601日期格式

如何从数据库以iso8601到type =“ date”的需要格式显示日期

如何在iOS上获取ISO 8601日期?

如何从Java中的ISO8601周号计算日期

Java 8日期和时间API:如何获取给定月份的ISO8601周数?

如何在C ++中将iso 8601日期(带有可选的毫秒)解析为struct tm?

使用iOS7的Swift ISO-8601日期格式

使用冒号分隔符格式化ISO 8601日期

如何在.Net中正确校正ISO8601日期时间的解析?

在MS Access中使用ISO 8601日期

C ++使用std :: get_time解析YYMMDD ISO 8601日期字符串会产生意外结果吗?

Yii2-使用DateValidator验证ISO8601日期时间格式

使用swift4的iso8601日期json解码

如何在python中比较ISO-8601日期

如何编写带时区但没有时间成分的ISO 8601日期

如何从ISO 8601日期时间格式中获取时分秒?

在Excel中解析ISO8601日期/时间(包括TimeZone)

如何在Objective-C中解析ISO 8601日期

在JAX-RS响应中使用ISO-8601日期

使用PHP更改ISO 8601日期格式

dashDB:如何从ISO 8601日期创建TIMESTAMP?

如何将ISO 8601日期时间转换为字符串?

如何过滤特定年份的ISO 8601日期

如何在javascript中将ISO 8601日期转换为'/Date(1525687010053)/'格式?