从值中获取年份和年份中的日期-Scala

时间:2019-06-08 05:13:52

标签: scala datetime user-defined-functions

我有一个6位数字的值,我必须从中获取scala中的日期。例如,如果值是-1​​19003,则输出应为

1=20 century
19=2019 year
003= january 3

输出应为2019/01/03

我尝试过先分割值,然后获取日期。但是我不确定如何进行操作,因为我是scala新手

2 个答案:

答案 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