我从服务器获取格式为String的字符串:2017-11-15 16:27:02
我想在这个时候设置日历,所以我做这样的事情:
String[] dateTime = response.body().getUser().getUserSessionExpire().split(" ");
String[] date = dateTime[0].split("-");
String[] time = dateTime[1].split(":");
Log.i("TIMMEE", "Received TIME: " + response.body().getUser().getUserSessionExpire());
int month = Integer.parseInt(date[1]);
int day = Integer.parseInt(date[2]);
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, Integer.parseInt(date[0]));
calendar.set(Calendar.MONTH, month);
calendar.set(Calendar.DAY_OF_MONTH, day);
calendar.set(Calendar.HOUR, Integer.parseInt(time[0]));
calendar.set(Calendar.MINUTE, Integer.parseInt(time[1]));
calendar.set(Calendar.SECOND, Integer.parseInt(time[2]));
例如,如果我得到
2017-11-15 16:27:02
日历将设置为:
2017-12-15 16:27:02或2017-11-16 16:27:02
实际上,月或日会改变! 有什么问题?
谢谢你的回答。
答案 0 :(得分:1)
您无需拆分日期。 SimpleDateFormat负责格式化。因此,您可以解析日期并从中获取Date对象。请参阅下面的代码并阅读SimpleDateFormat(上面链接)。
Calendar calendar=Calendar.getInstance();
SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd H:m:s", Locale.getDefault());
try {
Date d = DATE_FORMAT.parse("2017-11-15 16:27:02");
calendar.setTime(d);// Use this calender
} catch (ParseException e) {
e.printStackTrace();
}