我有一个6位数字的值,我必须从中获取scala中的日期。例如,如果值是-119003,则输出应为
1=20 century
19=2019 year
003= january 3
输出应为2019/01/03
我尝试过先分割值,然后获取日期。但是我不确定如何进行操作,因为我是scala新手
答案 0 :(得分:4)
我认为您必须手动进行世纪计算。之后,您可以让const c: C = getProp<'c'>('c');
库完成所有其余工作。
java.time
答案 1 :(得分:1)
Java 1.0的Date
类使用基于1900的年份,因此119表示2019。二十多年前,Java 1.1已经弃用了这种用法,因此令人惊讶的是它可以在Scala中生存。
当您说 6位数字时,我认为它是数字(不是字符串)。
jwvh的回答是正确的。我的变体就像(对Java代码很抱歉,请自行翻译):
int value = 119003;
int year1900based = value / 1000;
int dayOfYear = value % 1000;
LocalDate date = LocalDate.ofYearDay(year1900based + 1900, dayOfYear);
System.out.println(date);
2019-01-03
如果您有字符串,我只会将其切成两部分,分别是119和003(而不是您的注释中的三部分)。将它们解析为int
并按上述步骤进行。
如果您的输出需要2019/01/03
格式,请使用DateTimeFormatter
。在程序内部,请保留LocalDate
,而不要保留String
。