Scala - 如何将日期转换为整数

时间:2015-09-22 17:51:07

标签: scala

将日期显示为整数的Scala代码是什么? 例如,今天的日期将以整数显示为:

20150922

3 个答案:

答案 0 :(得分:4)

约达时间

与Reactormonk所说的相似,我会推荐Joda-Time及其DateTime类。但是你不想要getMillis()。您想使用formatting string yyyyMMdd,如下所示:

new DateTime().toString("yyyyMMdd")

答案 1 :(得分:0)

到目前为止,答案似乎都没有涵盖关于如何以整数获取当前日期的问题。这个答案也只使用标准的Java SE API,没有第三方库。

val now = java.time.LocalDate.now

val dateAsInt = now.getYear * 10000 + now.getMonthValue * 100 + now.getDayOfMonth
// => dateAsInt: Int = 20150922

答案 2 :(得分:0)

Answer by soongAnswer by Jörg W Mittag都很好。但是,让我们更好一些。

我不知道Scala语法,但这里是使用Java语法的代码,其中java.time框架内置于Java 8及更高版本中。

时区

时区对于确定日期至关重要。例如,巴黎的新日早些时候比蒙特利尔更新。

省略时区时,您隐式依赖JVM的当前默认时区。这使得您的代码对您的意图不那么明显。默认值可能因机器或系统管理员而异。更糟糕的是,默认时区可以在运行期间随时由JVM中运行的任何应用程序的任何线程中的任何代码进行更改。

ZoneId zoneId = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = ZonedDateTime.now( zoneId );

格式化程序

java.time框架具有我们为此目的所需的预定义格式DateTimeFormatter.BASIC_ISO_DATE

String s = zdt.format( DateTimeFormatter.BASIC_ISO_DATE );  // Ex: '20111203'
Integer i = Integer.valueOf( s );

我当然不建议这样做,但你可以将它们串在一起。

Integer i = Integer.valueOf( ZonedDateTime.now( ZoneId.of( "America/Montreal" ) ).format( DateTimeFormatter.BASIC_ISO_DATE ) );