经纬志
首页 / Cesium / API 文档

JulianDate

先看结论

Cesium 内部统一使用的时间类型:天数和当天秒数两段存储, 比 JS Date 精度高,所有时钟、采样、动画参数都用它。

最后验证 2026-11-03 · CesiumJS 1.121 · 更新 2026-10-28 · 引用本文
new Cesium.JulianDate(julianDayNumber, secondsOfDay, timeStandard)

构造参数

参数类型默认说明
julianDayNumbernumber0儒略日整数部分
secondsOfDaynumber0当天经过的秒数,可带小数
timeStandardTimeStandardTimeStandard.UTC时间标准,解析 ISO 时间时可能得到 TAI

常用成员

成员类型说明
dayNumbernumber儒略日整数部分
secondsOfDaynumber当天秒数,统一到 UTC 存储

常用静态方法

方法返回说明
JulianDate.now(result)JulianDate当前系统时间
fromDate(date, result)JulianDate由 JS Date 转换
fromIso8601(str, result)JulianDate解析 ISO 8601 字符串,推荐带时区
toIso8601(julianDate, precision)string输出字符串,precision 为小数秒位数
toDate(julianDate, result)Date转回 JS Date,毫秒级精度,会丢精度
addSeconds(julianDate, seconds, result)JulianDate加秒数,负值即减
addDays(julianDate, days, result)JulianDate加天数
secondsDifference(a, b)number两个时刻相差的秒数
daysDifference(a, b)number相差的天数
compare(a, b)number小于返回负数,相等返回 0
equals(a, b) / clone(date, result)boolean / JulianDate相等判断与拷贝

示例

var t0 = Cesium.JulianDate.fromIso8601('2026-10-28T08:00:00+08:00');
var t1 = Cesium.JulianDate.addSeconds(t0, 90, new Cesium.JulianDate());

console.log(Cesium.JulianDate.secondsDifference(t1, t0)); // 90
console.log(Cesium.JulianDate.toIso8601(t1, 3));          // 带 3 位小数秒

// 驱动时钟:设定区间、当前时间与倍速
viewer.clock.startTime = Cesium.JulianDate.clone(t0);
viewer.clock.stopTime = Cesium.JulianDate.clone(t1);
viewer.clock.currentTime = Cesium.JulianDate.clone(t0);
viewer.clock.multiplier = 2;
viewer.clock.shouldAnimate = true;

// 时间轴回到起点
viewer.clock.currentTime = t0.clone();

注意事项

  • 不要用 new Date() 参与计算,毫秒精度会累积误差;换算只在输入输出边界做一次。
  • fromIso8601 不写时区时按 ISO 规则当作 UTC,容易与本地时间差 8 小时。
  • JulianDate 不可变,所有运算方法都返回新对象或写入 result,原对象不变。
  • toIso8601 省略 precision 时不带小数秒,用于回放定位建议显式指定位数。
引用本文

经纬志(2026)。《JulianDate》。https://www.jingweizhi.com/cesium/api/julian-date.html(访问日期 2026-11-03)。