如何将给定的日期、时间及偏移量转换为UTC日期时间?
日期时间转UTC时间戳操作方案
核心转换逻辑
将三个独立字段解析为带时区信息的时间对象后转UTC,按需输出即可,步骤如下:
- 拼接日期、时间、偏移量三个字段为完整的带时区时间字符串,格式为
dd/mm/yyyy hh:mm:ss AM/PM +/-hhmm - 用对应语言的日期解析工具,匹配对应格式规则将字符串解析为带时区属性的时间实例
- 将带时区的本地时间实例转换为UTC时区的时间实例
- 直接调用时间戳方法得到Unix时间戳,或使用字符串格式化输出任意格式的UTC时间文本
常用实现示例(Python)
Python内置的datetime模块可直接匹配你提到的所有格式规则,无需额外第三方依赖,示例代码如下:
from datetime import datetime # 输入示例:日期为2024年10月5日,时间为下午3点25分45秒,东八区偏移 date_input = "05/10/2024" time_input = "03:25:45 PM" offset_input = "+0800" # 拼接为完整时间字符串 full_local_time = f"{date_input} {time_input} {offset_input}" # 按格式解析为带时区的datetime对象 # %d=日 %m=月 %Y=4位年 %I=12小时制小时 %M=分 %S=秒 %p=AM/PM标识 %z=±hhmm偏移量 local_datetime = datetime.strptime(full_local_time, "%d/%m/%Y %I:%M:%S %p %z") # 转换为UTC时区时间 utc_datetime = local_datetime.astimezone(datetime.timezone.utc) # 输出秒级Unix时间戳 print("UTC时间戳(秒):", utc_datetime.timestamp()) # 输出毫秒级时间戳按需乘以1000取整即可 print("UTC时间戳(毫秒):", int(utc_datetime.timestamp() * 1000)) # 自定义格式化输出UTC时间文本 print("格式化UTC时间:", utc_datetime.strftime("%Y-%m-%d %H:%M:%S"))
其他语言适配说明
如使用Java、JavaScript、Go等其他语言,只需找到对应语言的日期解析接口,匹配对应格式符即可:12小时制小时对应格式符通常为
h/I,AM/PM标识对应a/p,±hhmm格式偏移量对应z/Z,解析后转UTC时区再输出即可,逻辑和上述Python示例完全一致。
内容的提问来源于stack exchange,提问作者M.K
相关产品推荐
相关产品推荐

