我需要将新的Date()转换为Julian日期格式。在java函数中有任何构建。 我的确切要求是
以Julian日期格式(0YYDDD)表示文件的创建日期:0 - 数字零YY - 年份的最后两位数DDD - 年内的日期数可以在传输日期之前最多7个日历日示例:010163 = 2010年6月11日
真正看起来像是这样的事情
Date date=new Date();
String JulianDtae=date.someFunction()
任何帮助将不胜感激
答案 0 :(得分:1)
以下代码根据您提供的格式返回$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 日期和时间 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
)