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

如何在C语言中获取当前时间的毫秒级Epoch时间戳?

问题描述

我在C语言中使用以下代码获取时间戳:

((long)time(NULL))

得到的结果示例:

1741573562
Tue Jan 20 1970 22:46:13 GMT-0500 (Peru Standard Time)

同时在JavaScript中使用以下代码获取时间戳:

Date.now()

得到的结果示例:

1741573562162
Sun Mar 09 2025 21:26:02 GMT-0500 (Peru Standard Time)

更新:使用Windows系统


解决方案

在Windows系统中,默认情况下time_t是32位有符号整数(即使是64位编译环境),不过1741573562这个值其实还在32位有符号整数的范围内(最大值为2147483647,对应2038年1月19日)。

你遇到的核心问题是时间戳单位不匹配:C语言里time(NULL)返回的是秒级时间戳,而JavaScript的Date对象需要的是毫秒级时间戳。如果直接把C的秒级时间戳传给JavaScript的Date构造函数,会被当作毫秒处理,这就导致日期显示成1970年的错误结果。正确做法是把C获取到的时间戳乘以1000后再传给JavaScript。

另外,如果想避免2038年的时间溢出问题,可以在C代码包含任何头文件之前定义宏_USE_64BIT_TIME_T,这样time_t会变成64位整数,能处理更远未来的日期。


内容的提问来源于stack exchange,提问作者Andres Diaz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 21:32:37