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

如何用JavaScript从epochMilli和时区偏移秒数获取年月日?

JavaScript 实现类似 Java 的 OffsetDateTime 转 LocalDate 功能

给定毫秒级时间戳和时区偏移秒数,需要转换成对应时区的年、月、日,对应以下Java代码的功能:

OffsetDateTime offsetdatetime = Instant.ofEpochSecond(time).atOffset(ZoneOffset.ofTotalSeconds(offset));
LocalDate localdate = offsetDateTime.toLocalDate();

实现方案

方法一:直接通过时间戳偏移计算

核心思路是将UTC毫秒时间戳加上时区偏移的毫秒数,再通过UTC日期方法提取年、月、日(避免本地时区干扰):

// 输入参数
const epochMilli = 1669288500000;
const timezoneOffsetInSeconds = -18000; // 对应UTC-5时区

// 计算对应时区的时间戳(UTC时间戳 + 时区偏移毫秒数)
const adjustedTimestamp = epochMilli + timezoneOffsetInSeconds * 1000;
const date = new Date(adjustedTimestamp);

// 提取年、月、日(注意:JS的月份是0起始,需加1)
const year = date.getUTCFullYear();
const month = date.getUTCMonth() + 1;
const day = date.getUTCDate();

console.log(`年:${year},月:${month},日:${day}`);

方法二:使用Intl.DateTimeFormat API(更规范)

通过构造时区偏移字符串,利用国际化API直接提取对应时区的日期部分,适合处理包含分钟级偏移的复杂场景:

// 输入参数
const epochMilli = 1669288500000;
const timezoneOffsetInSeconds = -18000;

// 将偏移秒数转换为标准时区格式(如"-05:00")
const absOffset = Math.abs(timezoneOffsetInSeconds);
const hours = Math.floor(absOffset / 3600);
const minutes = Math.floor((absOffset % 3600) / 60);
const timezoneStr = `UTC${timezoneOffsetInSeconds >= 0 ? '+' : '-'}${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}`;

// 创建日期格式化器,指定目标时区
const dateFormatter = new Intl.DateTimeFormat('zh-CN', {
  year: 'numeric',
  month: '2-digit',
  day: '2-digit',
  timeZone: timezoneStr
});

// 提取日期各部分
const dateParts = dateFormatter.formatToParts(new Date(epochMilli));
const year = dateParts.find(part => part.type === 'year').value;
const month = dateParts.find(part => part.type === 'month').value;
const day = dateParts.find(part => part.type === 'day').value;

console.log(`年:${year},月:${month},日:${day}`);

说明

两种方法均能实现与Java代码一致的逻辑:将UTC时间戳结合时区偏移,得到对应时区的本地日期,并提取年、月、日信息。

内容的提问来源于stack exchange,提问作者nikhil kajrekar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 21:05:17