相关疑难解决方法(0)

Java中的Julian日

我在http://www.rgagnon.com/javadetails/java-0506.html上看过"解决方案" ,但它无法正常工作.例如,昨天(6月8日)应该是159,但它说它是245.

那么,有人在Java中有一个解决方案来获取当前日期的三位数朱利安日(不是朱利安日期 - 我需要今年的这一天)吗?

谢谢!标记

java julian-date

16
推荐指数
5
解决办法
4万
查看次数

如何在Java Calendar API中使用Julian Day Numbers?

Julian Day Numbers是一种将时间戳表示为自公元前4713年1月1日中午UTC以来连续天数(和小数天数)的方法.Java 7 SE API不包含对此格式的支持.使用过SQLite数据库的开发人员可能使用了strftime()函数提供的本机Julian Day支持.

将时间戳表示为Julian Day Numbers的优点包括:

  • 日期和时间可以表示为基本数据类型的毫秒精度(双精度)
  • 一年中的日子比一天中的几天更具体
  • 如果这种精确度不重要,可以解决"闰秒"的问题
  • 日期算术之间的天数是微不足道的; 排序优先级很容易确定
  • 很轻巧

缺点

  • Java Date/Time API没有对JDN的内置支持
  • 不适合进行非常精确的时间测量
  • 仅为UTC定义,必须从UTC映射到本地时间
  • 不适合向最终用户展示; 必须在显示之前转换/格式化

朱利安日数通常用于天文计算,其定义高度标准化并被接受.同样,修改后的朱利安日数(从1858年11月17日午夜开始计算)是标准定义并用于航空航天应用(见http://tycho.usno.navy.mil/mjd.html).

对于广泛使用日期/时间算法或按时间顺序排序的应用程序(或者如果持久化轻量级基元比持久化时间戳更具吸引力),在内部将日期和时间表示为JDN或MJD可能对您有意义.

以下代码定义了有助于将Julian Day Numbers或Modified Julian Day Numbers与Java Date/Time/Calendar API一起使用的函数.该代码基于Jean Meeus的"Astronomical Algorithms",第1版,1991年发表的算法.

public class JulianDay {

    private static final int YEAR = 0;
    private static final int MONTH = 1;
    private static final int DAY = 2;
    private static final int HOURS = 3;
    private static final int MINUTES = 4;
    private static final …
Run Code Online (Sandbox Code Playgroud)

java timestamp calendar date julian-date

7
推荐指数
2
解决办法
7021
查看次数

标签 统计

java ×2

julian-date ×2

calendar ×1

date ×1

timestamp ×1