Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 尝试解析时,日期时间在scala中解析不正确。显示所有日期的默认时间';s_Java_Scala_Date_Datetime_Dateformatter - Fatal编程技术网

Java 尝试解析时,日期时间在scala中解析不正确。显示所有日期的默认时间';s

Java 尝试解析时,日期时间在scala中解析不正确。显示所有日期的默认时间';s,java,scala,date,datetime,dateformatter,Java,Scala,Date,Datetime,Dateformatter,尝试解析时,日期时间在scala中解析不正确。显示所有日期的默认时间 使用joda时间以及正常的简单日期时间 import org.joda.time.DateTime import org.joda.time.format.DateTimeFormat val dateFormat="YYYY-MM-DD HH:mm:ss" val tempString="2019-01-01 00:00:00" println(DateTime.parse(tempString,DateTimeForma

尝试解析时,日期时间在scala中解析不正确。显示所有日期的默认时间

使用joda时间以及正常的简单日期时间

import org.joda.time.DateTime
import org.joda.time.format.DateTimeFormat

val dateFormat="YYYY-MM-DD HH:mm:ss"
val tempString="2019-01-01 00:00:00"
println(DateTime.parse(tempString,DateTimeFormat.forPattern(dateFormat)).toString("YYYY-MM-DD"))
val dateFormat="YYYY-MM-DD HH:mm:ss"
val tempString2="2019-05-01 00:00:00"
println(DateTime.parse(tempString2,DateTimeFormat.forPattern(dateFormat)).toString("YYYY-MM-DD"))


scala> val dateFormat="YYYY-MM-DD HH:mm:ss"
dateFormat: String = YYYY-MM-DD HH:mm:ss

scala> val tempString="2019-01-01 00:00:00"
tempString: String = 2019-01-01 00:00:00

scala> println(DateTime.parse(tempString,DateTimeFormat.forPattern(dateFormat)).toString("YYYY-MM-DD"))
2019-01-01

scala> val dateFormat="YYYY-MM-DD HH:mm:ss"
dateFormat: String = YYYY-MM-DD HH:mm:ss

scala> val tempString2="2019-05-01 00:00:00"
tempString2: String = 2019-05-01 00:00:00

scala> println(DateTime.parse(tempString2,DateTimeFormat.forPattern(dateFormat)).toString("YYYY-MM-DD"))
2019-01-01

简单日期格式

import java.util.Date
import java.text.SimpleDateFormat
import java.sql.Timestamp

println(formatter.parse(tempString2))
println(formatter.parse(tempString))

scala> println(formatter.parse(tempString2))
Sun Dec 30 00:00:00 IST 2018

scala> println(formatter.parse(tempString))
Sun Dec 30 00:00:00 IST 2018

我无法准确地指出这个问题。请告诉我这个。

使用
yyyy-MM-dd HH:MM:ss
,因为
dd
是一年中的一天,而您想要
dd
月中的一天(同时使用
DateTimeFormat
SimpleDateFormat
),但差异是因为
yyyy
表示纪年,使用
DateTimeFormat
,但是使用
SimpleDateFormat
的周年,您需要
yyy
年(两者都有)。非常感谢您现在获得了正确的时间。:)我建议您不要使用
SimpleDateFormat
Date
。这些类设计得很糟糕,而且早已过时,其中前者尤其令人讨厌。乔达时间比较好。最好的是
LocalDateTime
DateTimeFormatter
,它们都来自@OleV.V。你错了,但我自己也这么认为,然后我意识到第一个示例是解析日期值
2019-01-01
,无论使用
DD
(一年中的一天)还是
DD
(一个月中的一天),都会得到相同的日期。问题实际上是自Joda Time和SimpleDateFormat对其含义不一致以来的
YYYY
,这就是他们给出不同结果的原因(
2019-01-01
vs
2018年12月30日
),正如我在评论中所说。但是您是对的,第二个示例还存在
DD
问题,因为它最终覆盖了
MM
值,得到的是一月,而不是五月。请恢复链接。@Andreas我可能不清楚,但我没有错。第一个示例将
2019-01-01
2019-05-01
解析为2019-01-01,这是不正确的,通过将所有四种格式模式字符串中的
DD
更改为
DD
来修复。将
YYYY
更改为
yyy
在这里没有任何区别,也就是说,无法解决问题。我想这大概就是我们双方的意思。使用
yyyy-MM-dd HH:MM:ss
,因为
dd
是一年中的一天,而您想要
dd
月中的一天(同时使用
DateTimeFormat
SimpleDateFormat
),但这种差异是因为
YYYY
表示纪年,日期格式为
DateTimeFormat
,但周年格式为
SimpleDateFormat
,您需要
YYYY
年(两者都有)。非常感谢您现在获得了正确的时间。:)我建议您不要使用
SimpleDateFormat
Date
。这些类设计得很糟糕,而且早已过时,其中前者尤其令人讨厌。乔达时间比较好。最好的是
LocalDateTime
DateTimeFormatter
,它们都来自@OleV.V。你错了,但我自己也这么认为,然后我意识到第一个示例是解析日期值
2019-01-01
,无论使用
DD
(一年中的一天)还是
DD
(一个月中的一天),都会得到相同的日期。问题实际上是自Joda Time和SimpleDateFormat对其含义不一致以来的
YYYY
,这就是他们给出不同结果的原因(
2019-01-01
vs
2018年12月30日
),正如我在评论中所说。但是您是对的,第二个示例还存在
DD
问题,因为它最终覆盖了
MM
值,得到的是一月,而不是五月。请恢复链接。@Andreas我可能不清楚,但我没有错。第一个示例将
2019-01-01
2019-05-01
解析为2019-01-01,这是不正确的,通过将所有四种格式模式字符串中的
DD
更改为
DD
来修复。将
YYYY
更改为
yyy
在这里没有任何区别,也就是说,无法解决问题。我想这大概就是我们俩想说的。