码迷,mamicode.com
首页 > 其他好文 > 详细

Calender设置固定时间遇到的问题

时间:2016-12-30 18:40:21      阅读:661      评论:0      收藏:0      [点我收藏+]

标签:not   round   需要   end   base   sys   log   time()   param   

在使用Calender获取实例,设置成UTC时区时,发现比我们常规的月份多了一个月:

示例代码如下:

Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
calendar.set(2016, 9, 11, 16, 0, 0);
System.out.println(calendar.getTime());

打印的结果为:

Wed Oct 12 00:00:00 CST 2016

即2016-10-12 00:00:00,比我们设置的月份多了一个月。

我们来看下calender中set的源码:

    /**
     * Sets the values for the fields <code>YEAR</code>, <code>MONTH</code>,
     * <code>DAY_OF_MONTH</code>, <code>HOUR_OF_DAY</code>, <code>MINUTE</code>, and
     * <code>SECOND</code>.
     * Previous values of other fields are retained.  If this is not desired,
     * call {@link #clear()} first.
     *
     * @param year the value used to set the <code>YEAR</code> calendar field.
     * @param month the value used to set the <code>MONTH</code> calendar field.
     * Month value is 0-based. e.g., 0 for January.
     * @param date the value used to set the <code>DAY_OF_MONTH</code> calendar field.
     * @param hourOfDay the value used to set the <code>HOUR_OF_DAY</code> calendar field.
     * @param minute the value used to set the <code>MINUTE</code> calendar field.
     * @param second the value used to set the <code>SECOND</code> calendar field.
     * @see #set(int,int)
     * @see #set(int,int,int)
     * @see #set(int,int,int,int,int)
     */
    public final void set(int year, int month, int date, int hourOfDay, int minute,
                          int second)
    {
        set(YEAR, year);
        set(MONTH, month);
        set(DATE, date);
        set(HOUR_OF_DAY, hourOfDay);
        set(MINUTE, minute);
        set(SECOND, second);
    }

看上面代码中飘红的部分,一月份是从0开始的~显而易见,需要将月份-1

Calender设置固定时间遇到的问题

标签:not   round   需要   end   base   sys   log   time()   param   

原文地址:http://www.cnblogs.com/sonofelice/p/6237702.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!