【发布时间】:2014-06-30 08:45:12
【问题描述】:
我必须使用 Fortran 使用 NetCDF 文件中的数据进行一些计算。而且,根据用户的选择,我只需要从每年中选择一个或几个月。
NetCDF 文件中的日期有时编码为“自 XXXX-XX-XX 以来的月份”,有时编码为“自 XXXX-XX-XX 以来的天数”,其他时间编码为“自 XXXX-XX-XX XX:XX 以来的小时数”等。
此外,这些必须被解释为属于某种类型的日历,可以是公历、儒略历、公历、360天等。
经过多次搜索,我有一个解决这个问题的计划,但想先问问专家。
我的计划如下:
-
使用UDUNITS package 将NetCDF 文件中包含的日期信息转换为儒略/公历日期。为此,我必须:
- 将 UDUNITS 的 C 代码绑定到 Fortran。
将获得的日期转换为所需的日历。为此,我认为我必须使用日历包。哪个是一个不错的选择?。
你同意吗?
【问题讨论】:
-
您的链接已损坏。另一种方法是自己做,如果您不关心准确处理 1580 年之前的日期,这会简化很多..
-
不,我不同意。真的,真正的问题是什么?您可以查看由 SO Fortran 专家之一制作的 github.com/milancurcic/datetime-fortran。
-
看来他们更新了udunits的版本。我已经更新了链接,所以现在可以使用了。
-
我似乎您建议的库旨在对时间和日期进行操作,而不是将它们从一个日历转换为另一个日历。这是必需的,因为 netcdf 文件中的日期存储在许多不同的日历类型中。例如,您可以遇到我在问题中列出的那些。
-
如果您发现 netcdf 文件的日历为 360 天,并且日期定义为“自 2000 年 12 月 29 日以来的天数”,则为每个时间步分配一个整数。第一个可以是:0, 1, 2, 3, .. 并且必须被解释为 2000-12-29, 2000-12-30, 2001-01-01, 2001-01-02, ...,但在公历中,它必须被解释为 2000-12-29, 2000-12-30, 2000-12-31, 2001-01-01, ...
标签: date datetime calendar fortran netcdf