我想做的事情如下:
Date date = new Date(); // current date
date = date - 300; // substract 300 days from current date and I want to use this "date"
Run Code Online (Sandbox Code Playgroud)
怎么做?
我想知道为什么'Y'会回归2012而'y'会在2011年回归SimpleDateFormat:
System.out.println(new SimpleDateFormat("Y").format(new Date())); // prints 2012
System.out.println(new SimpleDateFormat("y").format(new Date())); // prints 2011
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释原因吗?
我创建了几个小方法作为Util类,如下面的代码:
public class Util
{
public static final String DATETIME_PATTERN="YYYY/MM/DD - HH:mm:ss";
public static String getDateTime()
{
SimpleDateFormat sdf=new SimpleDateFormat(DATETIME_PATTERN);
return sdf.format(getToday());
}
public static Date getToday()
{
//Calendar today=Calendar.getInstance(); //didn't help
Calendar today=Calendar.getInstance(Locale.TAIWAN); //didn't fix
//Calendar today=Calendar.getInstance(TimeZone.getTimeZone("GMT+08:00")); //didn't fix as well
return today.getTime();
}
}
Run Code Online (Sandbox Code Playgroud)
而且,做了一个非常简单的运行,像这样:
//run in main class
System.out.println("Generating sitemap.xml, please wait..."+Util.getDateTime());
Run Code Online (Sandbox Code Playgroud)
结果是一个非常奇怪的日期 - > 2017/07/117
//Console result:
Generating sitemap.xml, please wait...2017/07/187 - 15:27:21
Run Code Online (Sandbox Code Playgroud)
搜索了类似的问题,并尝试了TimeZone,Locale,但没有帮助.有什么建议 ?
顺便说一句,这是我的环境: