关于AWS-Lambda-Python运行时的Function函数中的坑点-日期和时间是UTC时区
Posted on 2023-03-19 18:07 520_1351 阅读(78) 评论(0) 编辑 收藏 举报最近笔者在使用Lambda函数时,遇到一个小问题,排查了些时间,才找到原因,
先说根本原因,那就是关于Lambda 函数代码中的日期和时间,都是取的UTC时间,并不是中国时间
这个可以说是一个坑点、也可以说成一个注意事项,大家在写代码时应该需要注意,先说一下笔者的遇到的问题过程
1、函数的部分代码如下,笔者首页是取出当前日期时间值,然后也设置了一个删除日期的变量为当前时间+1天
import json import datetime def lambda_handler(event, context): # TODO implement now=datetime.datetime.now() deletedate=(now+datetime.timedelta(days=1)).strftime("%Y-%m-%d")
这个代码的每天凌晨的00:00执行,笔者通过EventBridge (CloudWatch Events)创建的策略,关于计划日期也是UTC格式的,这点笔者倒时注意到了,如下
Schedule expression: cron(0 16 ? * * *)
举例说明,如2023-03-02凌晨00:00时,执行时,deletedate的结果还是2023-03-02(与预期的结果不同)
最后又分析代码加上调试才找到原因,因为根据计划任务,确实会在2023-03-02凌晨00:00时执行,但当时的UTC时间将是2023-03-01 16:00:00
这样,deletedate将是在2023-03-01 16:00:00的基础上+1天,计算时,结果将是2023-03-02 16:00:00,按日期格式化结果就是 2023-03-02
解决方法>>>>:
1、在计算日期时间时,应该对datetime再加上8小时,换算成中国时区的时间,那么对于面的deletedate就应该加上32小时
尊重别人的劳动成果 转载请务必注明出处: https://www.cnblogs.com/5201351/p/17233834.html
作者:一名卑微的IT民工
出处:https://www.cnblogs.com/5201351
本博客所有文章仅用于学习、研究和交流目的,欢迎非商业性质转载。
由于博主的水平不高,文章没有高度、深度和广度,只是凑字数,不足和错误之处在所难免,希望大家能够批评指出。
博主是利用读书、参考、引用、复制和粘贴等多种方式打造成自己的文章,请原谅博主成为一个卑微的IT民工!