You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求协助:将指定可读时间字符串转换为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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:24:04