【发布时间】:2017-05-31 06:56:45
【问题描述】:
在 Android 中,我使用java.util.Calendar 以yyyy-MM-dd'T'hh:mm:ss'Z' 格式获取昨天的日期。例如,如果今天是31 May 2017,我想将昨天的日期设为2017-05-30T00:00:00Z。
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
// Date End = yesterday
calendar.add(Calendar.DATE, -1);
Date dateEnd = calendar.getTime();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss'Z'");
this.dateEndStr = formatter.format(dateEnd);
我期望输出为2017-05-30T00:00:00Z。但它给了我2017-05-30T12:00:00Z。
这里有什么问题?它与时区有关吗?我的时区是GMT/UTC + 08:00 hour。
【问题讨论】:
-
打印 dateEnd... 显示正确的日期
-
以后,写一个标题,专门总结你的问题的核心。这次是为了你。
-
仅供参考,麻烦的旧日期时间类,如
java.util.Date、java.util.Calendar和java.text.SimpleTextFormat现在是 legacy,被 java.time 类取代。见Tutorial by Oracle。
标签: java android date calendar simpledateformat