os.date函数没有返回期望的结果

我正在使用os.date()函数调用将字符串变量插入到我的MySQL表中:

tSend["sDate"] = os.date( "%Y-%m-%d %X", Core.GetUserValue(v, 25) )

tSend会转到另一个函数,该函数将其插入表中。

这不按要求工作。例如。它将在表中插入2013-01-31 12:59:59而不是2013-01-31 00:59:59。这发生在1159小时后的所有小时数。

根据Lua PiL书中的说法,

%X 意味着_时间_(例如,23:48:10)

我不能在我的查询中使用NOW(),因为由[Core.GetUserValue(v,25)](http://wiki.ptokax.ch/doku.php/scriptinghelp/ptokaxapi2#core.getuservalue_tuser_nvauleid)生成的时间是PtokaX的属性,并且以**从1970年1月1日以来的秒数**给出。

这里可能有什么问题?具有简单的lua代码的

print( os.date("%Y-%m-%d %X", 1355586777) )

生成的输出为2012-12-15 21:22:57(其中_1355586777_是我从Core.GetUserValue调用中收到的值)。

我曾经使用%H:%M:%S而不是%X,但我想使用%X,看来我要回去了。

点赞
用户1190388
用户1190388

我想我找到了行为中的错误。

我想这可能是因为 PtokaX 是用 C 写的,然后通过它调用 lua 脚本。由于 strftime%X 定义为

编写本地化的时间表示(与语言环境相关)

这会导致时间输出以12小时格式而不是24小时格式显示。我将在今天12点之后进行测试验证。

附言

我不知道如何检查locale日期格式,但我想这可能是唯一有效的原因来解释这种行为。


我切换回在我的脚本中使用 os.date("%Y-%m-%d %X")

2013-01-30 23:30:52