【发布时间】:2016-01-07 19:11:54
【问题描述】:
我必须将字符串解析为日期,比如givenDate,到 EST 时区。
另外,我必须取当前日期,让我们在 EST 时区说currentDate。
我当前的时区是 IST (GMT+5:30)。
如果 currentDate 大于 givenDate,那么我需要在 currentDate 中添加一天。
这是我实施的解决方案。
SimpleDateFormat df = new SimpleDateFormat("MM/dd/yyyy");
Calendar givenDate = Calendar.getInstance(TimeZone.getTimeZone("EST"));
givenDate .setTime(df.parse("01/08/2016"));
Calendar currentDate = Calendar.getInstance(TimeZone.getTimeZone("EST"));
if(currentDate.get(Calendar.YEAR) > givenDate .get(Calendar.YEAR) ||
currentDate.get(Calendar.DAY_OF_YEAR) > givenDate.get(Calendar.DAY_OF_YEAR)){
currentDate.add(Calendar.DATE, 1);
}
System.out.println("Final date : "+df.format(currentDate.getTime()));
有没有更好的解决方案?
此外,以下内容一直困扰着我。
考虑代码sn-p
SimpleDateFormat df = new SimpleDateFormat("MM/dd/yyyy");
Calendar givenDate = Calendar.getInstance(TimeZone.getTimeZone("EST"));
givenDate .setTime(df.parse("01/07/2016"));
System.out.println(givenDate .get(Calendar.DATE)); //6
System.out.println(givenDate .get(Calendar.DAY_OF_MONTH)); //6
System.out.println(givenDate .get(Calendar.DAY_OF_YEAR)); //6
为什么我在 DATE、DAY_OF_MONTH、DAY_OF_YEAR 得到 6?我希望 他们必须返回 7 因为给定的日期是从开始的 7 天 2016 年。
但是如果我在上面代码的第一行之后添加以下行,上面提到的字段返回 7。这可能是什么原因?
df.setTimeZone(TimeZone.getTimeZone("EST"));
.
【问题讨论】:
-
请用涵盖所有可能情况的具体示例更新您的帖子,显示输入和预期输出。