如何在 Lua 中设置默认时区?
How can I set the default timezone in Lua?
我可以像 PHP
一样在 Lua 中设置默认时区吗
date_default_timezone_set("Europe/London");
$Year = date('y');
$Month = date('m');
$Day = date('d');
$Hour = date('H');
$Minute = date('i');
我认为最简单的方法是在Lua开始的环境中设置它。
在类似 Unix 的操作系统上,我的意思是...
€ date
Do 7. Apr 07:25:53 CEST 2022
€ env -i TZ=Europe/London lua -e "print(os.date())"
Thu Apr 7 06:26:47 2022
€ env -i TZ=Europe/Berlin lua -e "print(os.date())"
Thu Apr 7 07:26:58 2022
不过可以随意写一个时间模块。
可能看起来像...
€ env -i TZ=Europe/London lua -e "tzdate = setmetatable({}, {__index = {Berlin = function() return os.date(_, os.time() + 3600) end}}) print(tzdate.Berlin())"
Thu Apr 7 07:41:03 2022
并且没有 env -i TZ=
和 @Egor Skriptunoff' 提示一个简单的,嗯,它怎么能被称为,也许是 Prototype?
$ /bin/lua -i
Lua 5.1.5 Copyright (C) 1994-2012 Lua.org, PUC-Rio
> tzdate = setmetatable({[0] = 7200}, {__tostring = function(self) return os.date('!%c', os.time() + self[#self]) end})
> print(tzdate)
Thu Apr 7 20:42:01 2022
> tzdate[1]=3600
> print(tzdate)
Thu Apr 7 19:42:43 2022
> tzdate[2]=7200
> print(tzdate)
Thu Apr 7 20:43:21 2022
这在自动转换 tostring()
由 print()
完成时有效。
因此,要获取变量中的值或做其他不自动转换的事情 tostring()
...
> tzdate[3]=10800
> io.write(tzdate)
stdin:1: bad argument #1 to 'write' (string expected, got table)
stack traceback:
[C]: in function 'write'
stdin:1: in main chunk
[C]: ?
> io.write(tostring(tzdate), '\n')
Thu Apr 7 21:59:40 2022
我可以像 PHP
一样在 Lua 中设置默认时区吗date_default_timezone_set("Europe/London");
$Year = date('y');
$Month = date('m');
$Day = date('d');
$Hour = date('H');
$Minute = date('i');
我认为最简单的方法是在Lua开始的环境中设置它。
在类似 Unix 的操作系统上,我的意思是...
€ date
Do 7. Apr 07:25:53 CEST 2022
€ env -i TZ=Europe/London lua -e "print(os.date())"
Thu Apr 7 06:26:47 2022
€ env -i TZ=Europe/Berlin lua -e "print(os.date())"
Thu Apr 7 07:26:58 2022
不过可以随意写一个时间模块。
可能看起来像...
€ env -i TZ=Europe/London lua -e "tzdate = setmetatable({}, {__index = {Berlin = function() return os.date(_, os.time() + 3600) end}}) print(tzdate.Berlin())"
Thu Apr 7 07:41:03 2022
并且没有 env -i TZ=
和 @Egor Skriptunoff' 提示一个简单的,嗯,它怎么能被称为,也许是 Prototype?
$ /bin/lua -i
Lua 5.1.5 Copyright (C) 1994-2012 Lua.org, PUC-Rio
> tzdate = setmetatable({[0] = 7200}, {__tostring = function(self) return os.date('!%c', os.time() + self[#self]) end})
> print(tzdate)
Thu Apr 7 20:42:01 2022
> tzdate[1]=3600
> print(tzdate)
Thu Apr 7 19:42:43 2022
> tzdate[2]=7200
> print(tzdate)
Thu Apr 7 20:43:21 2022
这在自动转换 tostring()
由 print()
完成时有效。
因此,要获取变量中的值或做其他不自动转换的事情 tostring()
...
> tzdate[3]=10800
> io.write(tzdate)
stdin:1: bad argument #1 to 'write' (string expected, got table)
stack traceback:
[C]: in function 'write'
stdin:1: in main chunk
[C]: ?
> io.write(tostring(tzdate), '\n')
Thu Apr 7 21:59:40 2022