当前位置: 首页 > 知识库问答 >
问题:

mongodb - pymongo 怎么插入北京时间的字符串?

曹光霁
2024-03-21

我现在有北京时间的字符串

2023-12-25 10:31:32

通过datetime.datetime.strptime(2023-12-25 10:31:32, "%Y-%m-%d %H:%M:%S")转换,pymongo插入到mongodb。mongodb默认插入的是utc时间的,怎么才能插入是北京时间的?

共有2个答案

戚阳文
2024-03-21

参考官方文档:https://pymongo.readthedocs.io/en/stable/examples/datetimes.html
MongoDB会把日期和时间都转换为utc,你可以不转换为datetime类型,直接把时间当作一个字符串保存,或者按照官方文档,保存的时候指定时区,读取的时候传入时区自动转换:

import pytz# 插入数据时指定时区pacific = pytz.timezone("Asia/Shanghai")aware_datetime = pacific.localize(datetime.datetime(2002, 10, 27, 6, 0, 0))result = db.times.insert_one({"date": aware_datetime})db.times.find_one()["date"]
from bson.codec_options import CodecOptions# codec_options 指定时区查询时自动转换时区aware_times = db.times.with_options(codec_options=CodecOptions(    tz_aware=True,    tzinfo=pytz.timezone('Asia/Shanghai')))result = aware_times.find_one()
郎灿
2024-03-21

要在 MongoDB 中插入北京时间(或其他任何时区的时间),您需要将时间转换为 UTC,然后将其插入到 MongoDB 中。当您从 MongoDB 检索数据时,您可以将其转换回所需的时区。

在 Python 中使用 pymongodatetime,您可以按照以下步骤进行:

  1. 转换字符串到 datetime 对象:使用 datetime.strptime 将字符串转换为 datetime 对象。
  2. 转换为 UTC:由于 MongoDB 存储的是 UTC 时间,所以您需要将 datetime 对象转换为 UTC。
  3. 插入到 MongoDB:使用 pymongo 插入转换后的 datetime 对象。

以下是一个示例代码:

from datetime import datetimefrom pytz import timezonefrom pymongo import MongoClient# 创建 MongoDB 客户端和数据库连接client = MongoClient('mongodb://localhost:27017/')db = client['your_database_name']collection = db['your_collection_name']# 北京时间字符串beijing_time_str = "2023-12-25 10:31:32"# 将字符串转换为 datetime 对象beijing_time = datetime.strptime(beijing_time_str, "%Y-%m-%d %H:%M:%S")# 将 datetime 对象转换为 UTCutc_time = beijing_time.astimezone(timezone('UTC'))# 插入到 MongoDBcollection.insert_one({"time": utc_time})

这样,当您插入 datetime 对象时,它将是 UTC 时间,但它代表的实际时间是北京时间。当您从 MongoDB 中检索该时间时,您可能需要将其转换回北京时间。

注意:您还需要确保您的 MongoDB 服务器和客户端的时区设置是正确的,以确保时间转换的准确性。

 类似资料:
  • 问题内容: 使用插入pandas DataFrame到mongodb的最快方法是什么? 尝试次数 给出了一个错误 给出了一个错误 给出了一个错误 df 问题答案: 我怀疑是否有 最快 和 最 简单的 方法。如果您不担心数据转换,可以 但是,如果您尝试将数据加载回,则会得到: 所以你必须将“A” columnt回S,以及所有不,或字段您。对于此示例:

  • 输出 pytz 只支持 上海时间,不支持 北京时间 但是上海时间有一个很恶心的地方,会比北京时间多 6 分钟 同样的问题,在我使用一些 linux 发行版(带GUI)的时候,也遇到过这样的问题,只能设置上海时间,没有北京时间可以选 why?是有什么国际法规定吗? 不过 python3.9 内置的 zoneinfo,但是不会出现多 6 分钟的问题 输出如下:

  • 可能重复: 将日期转换为javascript中的另一个时区 如何让这个程序得到台北的时间?他们的东西要修复吗?还是我需要为它添加一些代码?

  • 本文向大家介绍javascript实时显示北京时间的方法,包括了javascript实时显示北京时间的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了javascript实时显示北京时间的方法。分享给大家供大家参考。具体如下: 该页面中实时显示北京时间,更改时区也可以作为显示世界时间,代码如下: 希望本文所述对大家的javascript程序设计有所帮助。

  • 本文向大家介绍python获取标准北京时间的方法,包括了python获取标准北京时间的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python获取标准北京时间的方法。分享给大家供大家参考。具体分析如下: 这段python代码主要通过www.beijing-time.org的官网上获取标准的北京时间,如果你的服务器挂在网上,你可以通过这段代码定时获取北京时间,然后更新自己系统的标准时

  • 飞书生产力工具后端开发岗位,面试官人好好,还帮我面试总结,以及点评了表现。 用时一个小时,面完约二面。 项目介绍,因为讲的不是很清晰,面试官尝试深挖项目; 登录流程怎么做的;spring security 做了什么;如何配置 userpassword 校验?用的是什么设计模式?数据量大不大? 两道算法题 之字形遍历二叉树; 长度为10的环形列表,走 n 步回到 0 的次数; mysql 存储引擎从