我正尝试将字符串转换为Date,如下所示:
val inputFormat = SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss", Locale.getDefault())
val s = "Mon, 14 Oct 2019 07:10:28"
val time = inputFormat.parse(s)
Log.d("HttpTools", "time server:$time")
但是显示错误
java.text.ParseException: Unparseable date: "Mon, 14 Oct 2019 07:10:28"
我错过了什么吗? 预先感谢。
答案 0 :(得分:1)
使用以下格式:
EEE, dd MMM yyyy hh:mm:ss
答案 1 :(得分:1)
格式错误。
根据to the documentation,您的格式应为
EEE, dd MMM yyyy HH:mm:ss
请注意:
DDD
变为EEE
,因为您需要3个字母的天名
hh
变为HH
,因为您需要白天(0-23)。 hh
仅在您使用am/pm
答案 2 :(得分:1)
如果您使用的是Java-8,则可以使用LocalDateTime
和DateTimeFormatter
String text = "Mon, 14 Oct 2019 07:10:28";
DateTimeFormatter format = DateTimeFormatter.ofPattern("EEE, dd MMM yyyy HH:mm:ss", Locale.getDefault());
LocalDateTime dateTime = LocalDateTime.parse(text, format);
System.out.println(dateTime); // 2019-10-14T07:10:28
答案 3 :(得分:0)
您必须使用此格式来获取日期
EEE, dd MMM yyyy HH:mm:ss
答案 4 :(得分:0)
遇到了同样的问题,答案与@Meno Hochschild和其他人在评论中建议的一样, 不要使用Locale.getDefault(),因为您的字符串中包含英文文本(月份名称),因此,如果Locale.getDefault()中的本地语言不返回英文,则即使模式为对。 这仅仅是因为语言环境与输入字符串语言不匹配。 在我的情况下,我有一个与您的字符串相似的字符串,只是日期有所不同,并使用Locale.getDefault()在我的情况下返回了德语,但我的日期字符串中的月份名称是用英语写的,因此我总是收到此异常。 如果您知道传入的日期字符串始终以英语进行本地化,则只需将Locale.ENGLISH设置为SimpleDateFormat的第二个参数。