无法将正确的日期和时间设置为日历

时间:2017-11-15 12:42:06

标签: android android-calendar

我从服务器获取格式为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

实际上,月或日会改变! 有什么问题?

谢谢你的回答。

1 个答案:

答案 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();
    }