我尝试从字符串中解析日期:
```{r, results='asis', message=FALSE, warning=FALSE}
pander(head(cars))
```
我得到的输出是:
String dateString = "Fr, 1. Jan";
DateFormat format = new SimpleDateFormat("EE, d. MMM");
Date date = null;
try {
date = format.parse(dateString);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(format.format(date));
为什么会发生这种情况,为什么它与输入的输出不一样?
答案 0 :(得分:3)
你忘记了这一年。当你解析它时,你将在1970年进入(星期五将被忽略)。解析时,您将解析1970年1月1日星期四的日期。这应该有效:
String dateString = "Fr, 1. Jan";
DateFormat format = new SimpleDateFormat("EE, d. MMM");
Date date = null;
try {
date = format.parse(dateString);
} catch (Exception e) {
e.printStackTrace();
}
date.setYear(new Date().getYear()); //alternativ: date.setYear(2016);
System.out.println(date);
System.out.println(format.format(date));
答案 1 :(得分:2)
日期格式“E”是作为单词的星期几 - 您指定的“E”越多,该单词的字母越多; “EE”会在德语区域设置中将“Thursday”渲染为“Do”,这可能是您的默认语言环境。
您的代码对我来说是爆炸式的,但是这个类似的代码会产生相同的输出:
String dateString = "Fri, 1. Jan";
DateFormat format = new SimpleDateFormat("EEE, d. MMM");
Date date = format.parse(dateString);
DateFormat format2 = new SimpleDateFormat("EE, d. MMM", Locale.GERMAN);
System.out.println(format2.format(date));
输出:
Do, 1. Jan
答案 2 :(得分:2)
Java中的Date
始于01-01-1970
。 1970年1月1日是星期四,所以它将这一天解析为星期四而不是星期五。您必须添加一年才能保证它是星期五。