Python 我输入到Firestore数据库的所有日期都是+;1小时。(谷歌Firestore和邮戳问题)
为什么Firebase在添加时间戳时会将值增加一小时 我有一个python脚本,它将一些值放入Firestore数据库的集合中。数据包括时间戳。(请参见此处的python代码:) 在这个方法中,我将一些值放入firestore集合数据中。查看键值对time和timeText 在Firestore数据库中查找时,keyvalue对的值time为2020-01-16T23:00:00,这是正确的日期时间以及我要存储到数据库中的内容。这将作为字符串存储在firestore数据库中。问题在于keyvaluepairtimeText开关存储为Firebase时间戳。(见截图) 当查看Firestore中的键值对time时,该值不是我输入数据库的值。这是我的价值+1小时。(见截图) 在Swift中从Firestore文档获取日期时,时间戳中还添加了一个小时:( 运行python脚本的服务器、运行浏览器的计算机和运行swift代码的MacBook都具有相同的时区 编辑:更改了一些错误并添加了关于时区的最后一段Python 我输入到Firestore数据库的所有日期都是+;1小时。(谷歌Firestore和邮戳问题),python,firebase,google-cloud-firestore,Python,Firebase,Google Cloud Firestore,为什么Firebase在添加时间戳时会将值增加一小时 我有一个python脚本,它将一些值放入Firestore数据库的集合中。数据包括时间戳。(请参见此处的python代码:) 在这个方法中,我将一些值放入firestore集合数据中。查看键值对time和timeText 在Firestore数据库中查找时,keyvalue对的值time为2020-01-16T23:00:00,这是正确的日期时间以及我要存储到数据库中的内容。这将作为字符串存储在firestore数据库中。问题在于keyval
您的代码正在根据正在格式化日期的计算机上配置的时区(可能是UTC?)格式化
timeText
。Firestore控制台根据运行浏览器的计算机的时区格式化时间戳(UTC+1)。这些时区明显不同,彼此相差1小时。这是一个常见的误解-在堆栈溢出问题上经常出现这种情况
请注意,Timestamp对象不包含任何时区信息。它只是unix历元时间的偏移量。为了从中格式化人类可读的时间,需要假定一个时区,这是您遇到明显时间差异的地方。我发现了错误。Python并不真正关心您所在的时区,并且有一个时区的“奇怪”实现。要解决这个问题,我必须让python知道想要的时区(即使它是在运行脚本的服务器上设置的)。下面的代码解决了我的问题
myDate = datetime.strptime(yrRow.fromDate, '%Y-%m-%dT%H:%M:%S')
tz = pytz.timezone('Europe/Oslo')
aware_datetime = tz.localize(myDate
非常感谢您的帮助。我发现我在问这个问题时搞砸了。键值“timeText”(firestore中的字符串)具有正确的值,但当我在时间键值对中存储与firestore中的日期(datestamp)相同的值时,会添加一个小时:-(.运行python脚本的服务器、运行浏览器的计算机和运行swift代码的MacBook都具有相同的时区。运行python脚本的linux服务器上的时区pi@rpi:~$date+%Z%Z“我的Macbook上的CET+0100时区:(运行浏览器和swift iphone项目)Jimmys-air-2:~jimmybergetun$date+%Z%Z“CET+0100
myDate = datetime.strptime(yrRow.fromDate, '%Y-%m-%dT%H:%M:%S')
tz = pytz.timezone('Europe/Oslo')
aware_datetime = tz.localize(myDate