新的Date()到java中的Julian日期格式

时间:2015-08-19 09:05:45

标签: java datetime

我需要将新的Date()转换为Julian日期格式。在java函数中有任何构建。 我的确切要求是

以Julian日期格式(0YYDDD)表示文件的创建日期:0 - 数字零YY - 年份的最后两位数DDD - 年内的日期数可以在传输日期之前最多7个日历日示例:010163 = 2010年6月11日

真正看起来像是这样的事情

Date date=new Date();
String JulianDtae=date.someFunction()

任何帮助将不胜感激

3 个答案:

答案 0 :(得分:1)

使用SimpleDateFormat

以下代码根据您提供的格式返回$oldLocale=setlocale(LC_COLLATE, "0"); setlocale(LC_COLLATE, 'de_DE.utf8'); usort($countrys, 'strcoll'); setlocale(LC_COLLATE, $oldLocale); 的Julian日期字符串。

date

答案 1 :(得分:1)

java.time

我建议您使用 java.time(现代 Java 日期和时间 API)进行日期工作。您需要的格式已内置。

    LocalDate today = LocalDate.now(ZoneId.systemDefault());
    String ordinalDateString = today.format(DateTimeFormatter.ISO_ORDINAL_DATE);
    System.out.println(ordinalDateString);

今天 2021 年 1 月 20 日在 standard ISO 8601 format 中的输出:

<块引用>

2021-020

您提到的格式 0YYDDD 很特殊。这不是我以前见过的。如果您认真对待它,请定义一个提供它的格式化程序:

    DateTimeFormatter peculiarDateFormatter = DateTimeFormatter.ofPattern("0uuDDD");
<块引用>

021020

序数日期,而不是儒略日期

您要求的年份中的天数称为 ordinal date,这就是内置格式化程序在其名称中也包含 ordinal 的原因。儒略日是另一回事,即自公元前 4713 年 1 月 1 日以来的连续天数。序数日期有时被称为 Julian,但它没有真正的 Julian,所以为了避免混淆,更喜欢 ordinal 而不是 Julian

链接

答案 2 :(得分:0)

其实我觉得你需要的是

String yearYy = new SimpleDateFormat("yy").format(today)
String dayD = new SimpleDateFormat("D").format(today)
String dayDDD = dayD.padLeft(3,'0')
String julianDateString = yearYy + dayDDD

这给出了正确的儒略日期格式 - 不应该有前导的“0”,但您确实需要填充日期数字,使其始终为 3 个字符。

...我很确定这可以简化,但重要的是应该填充天数。

所以 20/01/21 给出 21020(而不是使用前面的例子时的 02120