IDL 是否能够从日期中添加/减去?

Is IDL able to add / subtract from date?

正如您看到上面的问题,我想知道 IDL 是否能够在给定日期上加上或减去天数/月数/年数。

例如:

given_date = anytim('01-jan-2000')
print, given_date

1-Jan-2000 00:00:00.000

如果我要在 given_date 上加上 2 周,那么这个日期应该出现:

15-Jan-2000 00:00:00.000

我已经在寻找这个问题的解决方案,但遗憾的是找不到任何解决方案。

注: 我使用的是普通日历日期,而不是儒略日期。

您是否只关心 1582 年之后的日期?精确到秒重要吗?

ANYTIM 例程不是 IDL 分发的一部分。可能有第三方例程来处理时间增量,但我不知道 IDL 库有任何内置函数。

默认情况下,您使用的是从 1979 年 1 月 1 日起的 ANYTIM returns 秒。因此 add/subtract 一些天数、周数或年数,您可以计算时间间隔中的秒数。当然,这并没有考虑闰年 seconds/years(但闰年很容易考虑,闰秒需要一个添加日期的数据库)。并且添加月份将需要确定哪个月份,从而确定其中的天数。

IDL 可以使用 JULDAY and CALDAT.

与 Julian 日期相互转换

您还可以使用 format 关键字到 PRINT, STRING, and READS.

从字符串读取和写入 Julian 日期(双精度或长整数)

您需要使用 (C()) calendar date format code

format='(c(cdi0,"-",cMoa,"-"cyi04," ",cHi02,":",cmi02,":",csf06.3))'

date = julday(1, 1, 2000)
print, date, format=format
; 1-Jan-2000 00:00:00.000

date = date + 14
print, date, format=format
; 15-Jan-2000 00:00:00.000