python utc时间戳转换 (解决1970之前的问题)

本文详细介绍了如何使用Python进行1970年前后的日期转换,包括将日期字符串转换为datetime对象,再转换为时间戳的过程,特别关注于处理1970年之前的日期,通过计算与1970年1月1日之间的差值来实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mmp,找个1970年之前的转换一百度全是复制粘贴的1970年之后的     这些人复制来复制去真是烦,算了还是自己写吧。

1970年之后的标准转换

#1.时间 19691231

curTime = datetime.strptime(str(19691231),'%Y%m%d')  #先把时间转为标准的 日期格式(datetime)

strTime = curTime.strftime('%Y-%m-%d %H:%M:%S') #转为 具体日期格式 的字符串

# 2.转为时间数组

timeArray = time.strptime(strTime, "%Y-%m-%d %H:%M:%S")

print timeArray

#3.转为时间戳

timeStamp = int(time.mktime(timeArray))

print timeStamp

 1970年之前的标准转换(之后的也可以用这个)

由于python的datetime 只支持1970之后的也就是 正值秒数,所以1970年之前的可以用负数表示。

也就是两个日期的时间差(具体到秒)取反就OK;

 curTime = datetime.strptime(str(19691231),'%Y%m%d') 
 strTime =  curTime.strftime('%Y-%m-%d %H:%M:%S')

 utcTime1 = datetime.strptime(strTime, '%Y-%m-%d %H:%M:%S')

 #这个时间之后为正 之前为负
 utcTime2 = datetime.strptime("1970-01-01 00:00:00", '%Y-%m-%d %H:%M:%S')

 metTime =  utcTime1 - utcTime2 #两个日期的 时间差

 timeStamp = metTime.days*24*3600 + metTime.seconds #换算成秒数

 print timeStamp

 

<think>我们正在处理用户关于UTC时间戳转换的查询。用户需要源代码示例。注意:用户提到的是“将UTC时间戳转换”,通常我们理解为将UTC时间戳转换为本地时间或可读时间字符串。我们将提供常见编程语言的转换示例。重要:时间戳通常是从1970-01-0100:00:00UTC开始经过的秒数(或毫秒数),但有时也可能是其他单位。这里我们假设为秒级时间戳,如果是毫秒级,则需除以1000(或使用不同的方法)。以下提供Python、JavaScript、Java、C++的示例。首先明确:UTC时间戳->转换为本地时间(或UTC时间)的可读字符串。用户没有明确目标格式,所以我们假设为本地时间(或UTC时间)的字符串表示。由于用户要求“源代码示例”,我们重点展示代码。</think> 以下是几种常见编程语言中将UTC时间戳转换为可读日期时间的源代码示例: ### Python 示例 ```python import datetime # UTC时间戳(秒级) timestamp = 1680134400 # 转换UTC时间 utc_time = datetime.datetime.utcfromtimestamp(timestamp) print("UTC时间:", utc_time) # 2023-03-30 00:00:00 # 转换为本地时间 local_time = datetime.datetime.fromtimestamp(timestamp) print("本地时间:", local_time) ``` ### JavaScript 示例 ```javascript // UTC时间戳(毫秒级) const timestamp = 1680134400000; // 转换UTC时间字符串 const utcDate = new Date(timestamp).toUTCString(); console.log("UTC时间:", utcDate); // "Wed, 29 Mar 2023 16:00:00 GMT" // 转换为本地时间 const localDate = new Date(timestamp); console.log("本地时间:", localDate.toLocaleString()); ``` ### Java 示例 ```java import java.time.*; public class TimestampConverter { public static void main(String[] args) { // UTC时间戳(秒级) long timestamp = 1680134400L; // 转换UTC时间 Instant instant = Instant.ofEpochSecond(timestamp); ZonedDateTime utcTime = instant.atZone(ZoneId.of("UTC")); System.out.println("UTC时间: " + utcTime); // 2023-03-30T00:00Z // 转换为本地时间 ZonedDateTime localTime = instant.atZone(ZoneId.systemDefault()); System.out.println("本地时间: " + localTime); } } ``` ### C++ 示例(C++11及以上) ```cpp #include <iostream> #include <chrono> #include <ctime> int main() { // UTC时间戳(秒级) std::time_t timestamp = 1680134400; // 转换UTC时间 std::tm* utcTime = std::gmtime(&timestamp); std::cout << "UTC时间: " << utcTime->tm_year + 1900 << '-' << utcTime->tm_mon + 1 << '-' << utcTime->tm_mday << std::endl; // 2023-3-30 // 转换为本地时间 std::tm* localTime = std::localtime(&timestamp); std::cout << "本地时间: " << localTime->tm_hour << ':' << localTime->tm_min << ':' << localTime->tm_sec << std::endl; } ``` **关键说明:** 1. 时间戳通常有两种单位: - **秒级**(Unix时间戳,10位数字):如Python/Java示例 - **毫秒级**(13位数字):如JavaScript示例 2. 转换时需注意: - `gmtime`/`UTC`方法直接转换UTC时间 - `localtime`方法根据系统时区转换 3. 时区处理差异: - Python/Java有明确的时区对象 - JavaScript的`Date`对象自动使用系统时区 - C++需通过`gmtime`和`localtime`区分 [^1]: IEEE 754浮点数规范对时间精度的影响
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

搓搓程序狗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值