在Shell中转换日期

在Shell中转换日期,shell,unix,date,Shell,Unix,Date,这是一个hart,我如何转换日期,如 12-23-11 13:37 例如(秒应始终为00) ?如果这是一个为您自己编写的脚本,而不是必须在一百万个不同环境中运行的脚本,那么根据可用的date版本,您应该能够使用它 阅读特定版本的date的手册页。例如,如果是在中记录的版本,则可以对输入字符串使用--date,等等 在Mac OS X上,使用-f选项指定输入格式,使用-j选项不尝试设置日期,并在命令行上指定输出格式 如果这是一个为您自己编写的脚本,而不是必须在一百万个不同环境中运行的脚本,那么根

这是一个hart,我如何转换日期,如

12-23-11 13:37
例如(秒应始终为00)


如果这是一个为您自己编写的脚本,而不是必须在一百万个不同环境中运行的脚本,那么根据可用的
date
版本,您应该能够使用它

阅读特定版本的
date
的手册页。例如,如果是在中记录的版本,则可以对输入字符串使用
--date
,等等


在Mac OS X上,使用
-f
选项指定输入格式,使用
-j
选项不尝试设置日期,并在命令行上指定输出格式

如果这是一个为您自己编写的脚本,而不是必须在一百万个不同环境中运行的脚本,那么根据可用的
date
版本,您应该能够使用它

阅读特定版本的
date
的手册页。例如,如果是在中记录的版本,则可以对输入字符串使用
--date
,等等


在Mac OS X上,使用
-f
选项指定输入格式,使用
-j
选项不尝试设置日期,并在命令行上指定输出格式

使用gnu date 5.97,您可以执行以下操作:

$ date -d '11-12-23 13:37' $date-d'11-12-23 13:37' 为了得到你想要的,你所需要做的就是按摩你的输入

由于gnu date并不普遍,下面是一个快速的perl脚本,它可以满足您的需要:

$ echo 12-23-11 13:37 | perl -MTime::Local -wnE ' y/-:/ /; @F=split; say scalar localtime timelocal( 0, $F[4], $F[3], $F[1], $F[0] - 1,$F[2]); ' Fri Dec 23 13:37:00 2011 $echo 12-23-11 13:37| perl-MTime::Local-wnE' y/-:/; @F=分割; 比如标量本地时间timelocal(0,$F[4],$F[3],$F[1],$F[0]-1,$F[2]); ' 2011年12月23日星期五13:37:00
(对于-E和say,需要perl 5.10,但应使用-E和print在较旧的perl中工作。)

对于gnu date 5.97,您可以执行以下操作:

$ date -d '11-12-23 13:37' $date-d'11-12-23 13:37' 为了得到你想要的,你所需要做的就是按摩你的输入

由于gnu date并不普遍,下面是一个快速的perl脚本,它可以满足您的需要:

$ echo 12-23-11 13:37 | perl -MTime::Local -wnE ' y/-:/ /; @F=split; say scalar localtime timelocal( 0, $F[4], $F[3], $F[1], $F[0] - 1,$F[2]); ' Fri Dec 23 13:37:00 2011 $echo 12-23-11 13:37| perl-MTime::Local-wnE' y/-:/; @F=分割; 比如标量本地时间timelocal(0,$F[4],$F[3],$F[1],$F[0]-1,$F[2]); ' 2011年12月23日星期五13:37:00
(对于-E和say,需要perl 5.10,但是应该在较旧的perl中使用-E和print。)

但是我的日期是MM-DD-YY MM:SS这个示例只适用于YY-MM-DD MM:SS,因此使用短语“按摩你的输入”。但是我的日期是MM-DD-YY MM:SS这个示例只适用于YY-MM-DD MM:SS,因此使用短语“按摩你的输入”。