2011-08-12 37 views
5

我想将dateformat中的一个字符串如'Aug 12/11'..转换为'YYYY-MM-DD',在这个例子中'2011-08-12' 。Perl /正则表达式日期格式转换

什么是最好的perl/regex用于这种转换?我能够通过解析每个和手动转换它..但我猜是有一个更快的方法来做到这一点与Perl /正则表达式。谢谢。

回答

4

我建议不要自己做任何这样的日期解析,尤其是通过试图想出一个或两个正则表达式。有很多现有的Perl模块可以做到这一点,例如Date::Manip。你的许多选择合理地涵盖in this article

+2

对于'Date :: Manip'为+1。最好使用专为此目的设计的库,而不是试图自己覆盖每个边缘案例。 –

+0

我的网络主机没有Date :: Manip,我没有权限安装这个模块:(这就是为什么我要寻找正则表达式的解决方案。 – simbatish

+0

@sim你有没有安装DateTime? – TLP

2

Time :: Piece已经是一个核心模块很长一段时间了,它有能力将一个字符串解析成一个Time :: Piece对象,然后它可以用10个gazillion不同的格式为你格式化。如果Time :: Piece未安装,您可以尝试查找其他几百个可在cpan上看到的日期时间模块。 (使用单行:perl -e“使用Module :: IHope :: IsHere || die \'Not found \'”)。

`Time::Piece->strptime(STRING, FORMAT) 
         # see strptime man page. Creates a new 
         # Time::Piece object` 

如果我不能开始在我的主目录中安装模块,