首页 / Cesium / API 文档
JulianDate
先看结论
Cesium 内部统一使用的时间类型:天数和当天秒数两段存储, 比 JS Date 精度高,所有时钟、采样、动画参数都用它。
new Cesium.JulianDate(julianDayNumber, secondsOfDay, timeStandard)
构造参数
| 参数 | 类型 | 默认 | 说明 |
|---|---|---|---|
julianDayNumber | number | 0 | 儒略日整数部分 |
secondsOfDay | number | 0 | 当天经过的秒数,可带小数 |
timeStandard | TimeStandard | TimeStandard.UTC | 时间标准,解析 ISO 时间时可能得到 TAI |
常用成员
| 成员 | 类型 | 说明 |
|---|---|---|
dayNumber | number | 儒略日整数部分 |
secondsOfDay | number | 当天秒数,统一到 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)。