请求协助:将指定可读时间字符串转换为Unix时间
没问题!这两种时间格式转Unix时间戳其实挺简单的,我给你整理了几个常用编程语言的实现方法,你按需选用就好:
Python 实现
Python自带的datetime模块就能轻松搞定这两种格式,不管是带时区的ISO标准格式,还是普通的本地时间字符串都能处理:
from datetime import datetime from zoneinfo import ZoneInfo # Python 3.9+ 可用,低版本可以用pytz # 处理带时区的时间字符串 time_str1 = "2018-01-01T14:50:00.000+05:00" dt1 = datetime.fromisoformat(time_str1) unix_time1 = dt1.timestamp() print(unix_time1) # 输出:1514824200.0 # 处理不带时区的时间字符串(这里假设是系统本地时区,若要指定时区可以手动设置) time_str2 = "2018-01-01 14:50:00" dt2 = datetime.strptime(time_str2, "%Y-%m-%d %H:%M:%S") # 如果需要转为UTC时区的Unix时间,可添加时区转换 # dt2 = dt2.replace(tzinfo=ZoneInfo("Asia/Shanghai")).astimezone(ZoneInfo("UTC")) unix_time2 = dt2.timestamp() print(unix_time2)
JavaScript 实现
不管是浏览器还是Node.js环境,用Date对象就能直接解析这两种格式,注意要把毫秒级时间戳转成秒级的Unix时间:
// 处理带时区的时间字符串 const timeStr1 = "2018-01-01T14:50:00.000+05:00"; const unixTime1 = new Date(timeStr1).getTime() / 1000; console.log(unixTime1); // 输出:1514824200 // 处理不带时区的时间字符串(默认按本地时区解析,要按UTC解析的话可以在末尾加'Z') const timeStr2 = "2018-01-01 14:50:00"; // 把空格替换成'T',让Date对象更好识别格式 const formattedStr2 = timeStr2.replace(' ', 'T'); const unixTime2 = new Date(formattedStr2).getTime() / 1000; console.log(unixTime2);
Java 实现
Java 8及以上版本推荐用java.time包来处理,这是官方推荐的时间处理API,对时区和不同格式的支持都很完善:
import java.time.LocalDateTime; import java.time.OffsetDateTime; import java.time.ZoneId; import java.time.format.DateTimeFormatter; public class TimeConverter { public static void main(String[] args) { // 处理带时区的时间字符串 String timeStr1 = "2018-01-01T14:50:00.000+05:00"; OffsetDateTime odt = OffsetDateTime.parse(timeStr1); long unixTime1 = odt.toEpochSecond(); System.out.println(unixTime1); // 输出:1514824200 // 处理不带时区的时间字符串(这里用系统默认时区,也可以指定具体时区如UTC) String timeStr2 = "2018-01-01 14:50:00"; DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); LocalDateTime ldt = LocalDateTime.parse(timeStr2, formatter); // 若要转为UTC时区的Unix时间,可替换为ZoneId.of("UTC") long unixTime2 = ldt.atZone(ZoneId.systemDefault()).toEpochSecond(); System.out.println(unixTime2); } }
小提醒
Unix时间戳的定义是从1970-01-01 00:00:00 UTC开始计算的秒数,所以处理不带时区的时间字符串时,一定要明确它对应的时区(比如是本地时区还是UTC),不然转换结果可能会有偏差哦!
内容的提问来源于stack exchange,提问作者Vladimir
相关产品推荐
相关产品推荐

