将日期显示为整数的Scala代码是什么? 例如,今天的日期将以整数显示为:
20150922
答案 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 soong和Answer 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 ) );