在简道云API编写中,从简道云日期时间字段中读到的数值,是UTC国际时。:UTC是国际时,UTC+8就是国际时加八小时,是东八区时间,也就是北京时间。问题:1.我经常用20201014+其它值,形成唯一值字段,在用API进行转换的时候,必须先把UTC时间转换成北京时间,否则会出现错误。2.如果把简道云表单备份到mysql表单中时,也需要把UTC时间转换成北京时间,否则mysql中会出现日期数值不准的情况。我书写的类方法:
# 转换成北京时间,可备份到mysql中def get_local_time(self, utc_datetime): if utc_datetime is not None: import datetime, time utc = utc_datetime UTC_FORMAT = '%Y-%m-%dT%H:%M:%S.%fZ' utc_time = datetime.datetime.strptime(utc, UTC_FORMAT) local_time = utc_time + datetime.timedelta(hours = 8) # print("北京时间:", local_time) else: local_time = "" return local_time# 把日期变为20201220这样的字符串# 先把取得的简道云日期加上8,然后再进行处理def get_YYYYMMDD(self, utc_datetime): if utc_datetime is not None: local_time = self.get_local_time(utc_datetime) riqi1 = local_time.year, '%02d' % local_time.month, '%02d' % local_time.day # print(riqi1) YYYYMMDD = (str(riqi1[0]) + riqi1[1] + riqi1[2]) # print("北京时间的字符格式:", YYYYMMDD) else: YYYYMMDD = "" return YYYYMMDD# 这个是把上面两个方法合为一个方法def get_localtime_and_YYYYMMDD(self, utc_datetime): if utc_datetime is not None: local_time = self.get_local_time(utc_datetime) riqi1 = local_time.year, '%02d' % local_time.month, '%02d' % local_time.day # print(riqi1) YYYYMMDD = (str(riqi1[0]) + riqi1[1] + riqi1[2]) # print("北京时间的字符格式:", YYYYMMDD) localtime_and_YYYYMMDD = {'local_time': local_time, 'YYYYMMDD': YYYYMMDD} # print(localtime_and_YYYYMMDD) else: localtime_and_YYYYMMDD = {'local_time': "", 'YYYYMMDD': ""} return localtime_and_YYYYMMDD