【懒人精灵】使用go和懒人精灵混合编程中,将时间戳转换为格式化的时间,时区转换问题

前言

将时间戳转换为格式化的时间,有两种方法。
一种是直接使用lua的方法,一种是lua调用go的方法。
其中,在go中需要注意时区问题。

方法一

print(os.date("%Y-%m-%d %H:%M:%S", 1763266042)) 

返回:“2025-11-16 12:07:22”

方法二

go格式化时间戳为标准的时间格式:

func FormatTime(timestamp int64, layout string) string {
    t := time.Unix(timestamp, 0)
    return t.Format(layout)
}

懒人精灵调用go的方法:

print(gobridge.call("libgo.so", "FormatTime", 1763266042, "2006-01-02 15:04:05"))

返回:“2025-11-16 04:07:22”

可以看到,go返回的时间,比lua返回的时间少了8个小时!

这是一个时区问题。Go和Lua在处理时间戳时的默认时区设置不同导致的。

Lua的os.date函数默认使用本地时区,而Go的time.Unix默认使用UTC时间。在中国,本地时区是UTC+8,所以会相差8小时。

设置go的时区

可以使用init函数的方式设置时区。

// libgo\main.go
func init() {
    // 设置本地时区为东八区(中国标准时间)
    var err error
    time.Local, err = time.LoadLocation("Asia/Shanghai")
    if err != nil {
        // 如果加载时区失败,使用固定偏移量
        time.Local = time.FixedZone("CST", 8*3600)
    }

}

这样修改后,FormatTime函数就能正确处理时区了。这个init函数会在包被导入时自动执行,设置正确的本地时区。

1. 官方交流QQ群,添加多个不批。建议使用安卓手机或电脑申请。
飞云脚本圈: 586333520飞云脚本圈
Auto.js学习交流③群:286635606
Auto.js学习交流②群:712194666(满员)
IOS免越狱自动化测试群:691997586
2. 盗版,破解有损他人权益和违法作为,请各位会员支持正版。
3. 本站部分资源来源于用户上传和网络搜集,如有侵权请提供版权证明并联系站长删除。
4.如未特别申明,本站的技术性文章均为原创,未经授权,禁止转载/搬运等侵权行为。
5.全站所有付费服务均为虚拟商品,购买后自动发货。售出后概不接受任何理由的退、换。注册即为接受此条款。
6.如果站内内容侵犯了您的权益,请联系站长删除。
飞云脚本 » 【懒人精灵】使用go和懒人精灵混合编程中,将时间戳转换为格式化的时间,时区转换问题

企业级大数据智能营销管理系统

源码转让