我有一个依赖于DateTime模块的脚本。 作为将我的开发集成到一个环境中的一部分,我已经从linux和cygwin中的命令行更改为Windows 7上的Eclipse。
在linux / cygwin中有以下几行:
$time_value = strftime "%F %H:%M:%S %p", localtime;
生成时间数据:
2013-07-24 13:46:19
但是从Eclipse,在Activestate PERL环境中(安装了所有相关模块) 我明白了:
%F %H:%M:%S %p
奇怪的是,它是完全相同的脚本文件。我正在使用安装在两种环境中的DateTime模块,但此输出表明模块出现故障。
知识渊博的PERL大师的任何想法?
更新:
我正在使用POSIX qw(strftime),如下所示: How can I parse a strftime formatted string in Perl?
我的目标是以这种格式转换日期: 2010年8月7日星期三18:22:30 -0600
进入任何一个MySQL date_format表单。
因此,如果POSIX使程序不可移植,我的选择是什么?
答案 0 :(得分:3)
您使用的strftime
函数不是来自DateTime模块。该模块纯粹是面向对象的,并使用方法:$dt->strftime($format)
。
您似乎已导入strftime
from the POSIX module。对于有问题的功能,对可移植性进行了一些限制:
[...]请参阅系统的“
strftime()
”联机帮助页,了解有关这些和其他参数的详细信息。如果希望代码可移植,则格式(“fmt”)参数应仅使用ANSI C标准定义的转换说明符(C89,以便安全地播放)。这些是
"aAbBcdHIjmMpSUwWxXyYZ%"
。但即使这样,一些转换说明符的结果也是不可移植的。
您看到%F
不在这些便携式格式说明符中。
答案 1 :(得分:0)
解决方案是将%F改为%Y-%m-%d。