码迷,mamicode.com
首页 > 编程语言 > 详细

java解惑之Calendar

时间:2015-04-17 11:35:09      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:java解惑

Java Calendar 类时间操作,代码很简单。

演示了获取时间,日期时间的累加和累减。

<span style="font-size:18px;">package MyTest;

/*
 * 演示 Calendar 的一般操作
 */
import java.util.Date;
import java.text.SimpleDateFormat;
import java.text.DateFormat;
import java.util.Calendar;

public class Test
{
  public Test()
  {
  }

  public static void main(String[] args)
  {
    // 字符串转换日期格式
    // DateFormat fmtDateTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    // 得到日期格式对象
    // Date date = fmtDateTime.parse(strDateMake);

    // 完整显示日期时间
    String str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS")).format(new Date());
    System.out.println(str);

    // 创建 Calendar 对象
    Calendar calendar = Calendar.getInstance();
    // 初始化 Calendar 对象,但并不必要,除非需要重置时间
    calendar.setTime(new Date());

    // setTime 类似上面一行
    // Date date = new Date();
    // calendar.setTime(date);

    // 显示年份
    int year = calendar.get(Calendar.YEAR);
    System.out.println("YEAR is = " + String.valueOf(year));

    // 显示月份 (从0开始, 实际显示要加一)
    int MONTH = calendar.get(Calendar.MONTH);
    System.out.println("MONTH is = " + (MONTH + 1));

    // 今年的第 N 天
    int DAY_OF_YEAR = calendar.get(Calendar.DAY_OF_YEAR);
    System.out.println("DAY_OF_YEAR is = " + DAY_OF_YEAR);

    // 本月第 N 天
    int DAY_OF_MONTH = calendar.get(Calendar.DAY_OF_MONTH);
    System.out.println("DAY_OF_MONTH = " + String.valueOf(DAY_OF_MONTH));

    // 3小时以后
    calendar.add(Calendar.HOUR_OF_DAY, 3);
    int HOUR_OF_DAY = calendar.get(Calendar.HOUR_OF_DAY);
    System.out.println("HOUR_OF_DAY + 3 = " + HOUR_OF_DAY);

    // 当前分钟数
    int MINUTE = calendar.get(Calendar.MINUTE);
    System.out.println("MINUTE = " + MINUTE);

    // 15 分钟以后
    calendar.add(Calendar.MINUTE, 15);
    MINUTE = calendar.get(Calendar.MINUTE);
    System.out.println("MINUTE + 15 = " + MINUTE);

    // 30分钟前
    calendar.add(Calendar.MINUTE, -30);
    MINUTE = calendar.get(Calendar.MINUTE);
    System.out.println("MINUTE - 30 = " + MINUTE);

    // 格式化显示
    str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS")).format(calendar.getTime());
    System.out.println(str);

    // 重置 Calendar 显示当前时间
    calendar.setTime(new Date());
    str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS")).format(calendar.getTime());
    System.out.println(str);

    // 创建一个 Calendar 用于比较时间
    Calendar calendarNew = Calendar.getInstance();

    // 设定为 5 小时以前,后者大,显示 -1
    calendarNew.add(Calendar.HOUR, -5);
    System.out.println("时间比较:" + calendarNew.compareTo(calendar));

    // 设定7小时以后,前者大,显示 1
    calendarNew.add(Calendar.HOUR, +7);
    System.out.println("时间比较:" + calendarNew.compareTo(calendar));

    // 退回 2 小时,时间相同,显示 0
    calendarNew.add(Calendar.HOUR, -2);
    System.out.println("时间比较:" + calendarNew.compareTo(calendar));
  }
}
</span>

YEAR

public static final int YEAR
指示年的 getset 的字段数字。这是一个特定于日历的值;请参阅子类文档。
另请参见:
常量字段值

MONTH

public static final int MONTH
指示月份的 getset 的字段数字。这是一个特定于日历的值。在格里高利历和罗马儒略历中一年中的第一个月是 JANUARY,它为 0;最后一个月取决于一年中的月份数。
另请参见:
JANUARY, FEBRUARY, MARCH, APRIL, MAY, JUNE, JULY, AUGUST, SEPTEMBER, OCTOBER, NOVEMBER, DECEMBER, UNDECIMBER, 常量字段值

WEEK_OF_YEAR

public static final int WEEK_OF_YEAR
getset 的字段数字,指示当前年中的星期数。正如 getFirstDayOfWeek()getMinimalDaysInFirstWeek() 所定义的那样,一年中第一个星期的值为 1。子类定义一年第一个星期之前的天数,即 WEEK_OF_YEAR 的值。
另请参见:
getFirstDayOfWeek(), getMinimalDaysInFirstWeek(), 常量字段值

WEEK_OF_MONTH

public static final int WEEK_OF_MONTH
getset 的字段数字,指示当前月中的星期数。正如 getFirstDayOfWeek()getMinimalDaysInFirstWeek() 所定义的那样,一个月中第一个星期的值为 1。子类定义一个月第一个星期之前的天数,即 WEEK_OF_MONTH 的值。
另请参见:
getFirstDayOfWeek(), getMinimalDaysInFirstWeek(), 常量字段值

DATE

public static final int DATE
getset 的字段数字,指示一个月中的某天。它与 DAY_OF_MONTH 是同义词。一个月中第一天的值为 1。
另请参见:
DAY_OF_MONTH, 常量字段值

DAY_OF_MONTH

public static final int DAY_OF_MONTH
getset 的字段数字,指示一个月中的某天。它与 DATE 是同义词。一个月中第一天的值为 1。
另请参见:
DATE, 常量字段值

DAY_OF_YEAR

public static final int DAY_OF_YEAR
getset 的字段数字,指示当前年中的天数。一年中第一天的值为 1。
另请参见:
常量字段值

DAY_OF_WEEK

public static final int DAY_OF_WEEK
getset 的字段数字,指示一个星期中的某天。该字段可取的值为 SUNDAYMONDAYTUESDAYWEDNESDAYTHURSDAYFRIDAYSATURDAY
另请参见:
SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, 常量字段值

DAY_OF_WEEK_IN_MONTH

public static final int DAY_OF_WEEK_IN_MONTH
getset 的字段数字,指示当前月中的第几个星期。与 DAY_OF_WEEK 字段一起使用时,就可以唯一地指定某月中的某一天。与 WEEK_OF_MONTHWEEK_OF_YEAR 不同,该字段的值并 取决于 getFirstDayOfWeek()getMinimalDaysInFirstWeek()DAY_OF_MONTH 1 到 7 总是对应于 DAY_OF_WEEK_IN_MONTH 1814 总是对应于 DAY_OF_WEEK_IN_MONTH 2,依此类推。DAY_OF_WEEK_IN_MONTH 0 表示 DAY_OF_WEEK_IN_MONTH 1 之前的那个星期。负值是从一个月的末尾开始逆向计数,因此,一个月的最后一个星期天被指定为 DAY_OF_WEEK = SUNDAY, DAY_OF_WEEK_IN_MONTH = -1。因为负值是逆向计数的,所以它们在月份中的对齐方式通常与正值的不同。例如,如果一个月有 31 天,那么 DAY_OF_WEEK_IN_MONTH -1 将与 DAY_OF_WEEK_IN_MONTH 5 DAY_OF_WEEK_IN_MONTH 4 的末尾相重叠。
另请参见:
DAY_OF_WEEK, WEEK_OF_MONTH, 常量字段值

AM_PM

public static final int AM_PM
getset 的字段数字,指示 HOUR 是在中午之前还是在中午之后。例如,在 10:04:15.250 PM 这一时刻,AM_PMPM
另请参见:
AM, PM, HOUR, 常量字段值

HOUR

public static final int HOUR
getset 的字段数字,指示上午或下午的小时。HOUR 用于 12 小时制时钟 (0 - 11)。中午和午夜用 0 表示,不用 12 表示。例如,在 10:04:15.250 PM 这一时刻,HOUR 为 10。
另请参见:
AM_PM, HOUR_OF_DAY, 常量字段值

HOUR_OF_DAY

public static final int HOUR_OF_DAY
getset 的字段数字,指示一天中的小时。HOUR_OF_DAY 用于 24 小时制时钟。例如,在 10:04:15.250 PM 这一时刻,HOUR_OF_DAY 为 22。
另请参见:
HOUR, 常量字段值

MINUTE

public static final int MINUTE
getset 的字段数字,指示一小时中的分钟。例如,在 10:04:15.250 PM 这一时刻,MINUTE 为 4。
另请参见:
常量字段值

SECOND

public static final int SECOND
getset 的字段数字,指示一分钟中的秒。例如,在 10:04:15.250 PM 这一时刻,SECOND 为 15。
另请参见:
常量字段值

MILLISECOND

public static final int MILLISECOND
getset 的字段数字,指示一秒中的毫秒。例如,在 10:04:15.250 PM 这一时刻,MILLISECOND 为 250。
另请参见:
常量字段值

SUNDAY

public static final int SUNDAY
指示 Sunday 的 DAY_OF_WEEK 字段值。
另请参见:
常量字段值

MONDAY

public static final int MONDAY
指示 Monday 的 DAY_OF_WEEK 字段值。
另请参见:
常量字段值

TUESDAY

public static final int TUESDAY
指示 Tuesday 的 DAY_OF_WEEK 字段值。
另请参见:
常量字段值

WEDNESDAY

public static final int WEDNESDAY
指示 Wednesday 的 DAY_OF_WEEK 字段值。
另请参见:
常量字段值

THURSDAY

public static final int THURSDAY
指示 Thursday 的 DAY_OF_WEEK 字段值。
另请参见:
常量字段值

FRIDAY

public static final int FRIDAY
指示 Friday 的 DAY_OF_WEEK 字段值。
另请参见:
常量字段值

SATURDAY

public static final int SATURDAY
指示 Saturday 的 DAY_OF_WEEK 字段值。
另请参见:
常量字段值

JANUARY

public static final int JANUARY
指示在格里高利历和罗马儒略历中一年中第一个月的 MONTH 字段值。
另请参见:
常量字段值

FEBRUARY

public static final int FEBRUARY
指示在格里高利历和罗马儒略历中一年中第二个月的 MONTH 字段值。
另请参见:
常量字段值

MARCH

public static final int MARCH
指示在格里高利历和罗马儒略历中一年中第三个月的 MONTH 字段值。
另请参见:
常量字段值

APRIL

public static final int APRIL
指示在格里高利历和罗马儒略历中一年中第四个月的 MONTH 字段值。
另请参见:
常量字段值

MAY

public static final int MAY
指示在格里高利历和罗马儒略历中一年中第五个月的 MONTH 字段值。
另请参见:
常量字段值

JUNE

public static final int JUNE
指示在格里高利历和罗马儒略历中一年中第六个月的 MONTH 字段值。
另请参见:
常量字段值

JULY

public static final int JULY
指示在格里高利历和罗马儒略历中一年中第七个月的 MONTH 字段值。
另请参见:
常量字段值

AUGUST

public static final int AUGUST
指示在格里高利历和罗马儒略历中一年中第八个月的 MONTH 字段值。
另请参见:
常量字段值

SEPTEMBER

public static final int SEPTEMBER
指示在格里高利历和罗马儒略历中一年中第九个月的 MONTH 字段值。
另请参见:
常量字段值

OCTOBER

public static final int OCTOBER
指示在格里高利历和罗马儒略历中一年中第十个月的 MONTH 字段值。
另请参见:
常量字段值

NOVEMBER

public static final int NOVEMBER
指示在格里高利历和罗马儒略历中一年中第十一个月的 MONTH 字段值。
另请参见:
常量字段值

DECEMBER

public static final int DECEMBER
指示在格里高利历和罗马儒略历中一年中第十二个月的 MONTH 字段值。
另请参见:
常量字段值

UNDECIMBER

public static final int UNDECIMBER
指示一年中第十三个月的 MONTH 字段值。尽管 GregorianCalendar 没有使用该值,但阴历会使用。
另请参见:
常量字段值

time

protected long time

日历的当前设置时间,以毫秒为单位,表示自格林威治标准时间 1970 年 1月 1 日 0:00:00 后经过的时间。

getTime

public final Date getTime()
返回一个表示此 Calendar 时间值(从历元至现在的毫秒偏移量)的 Date 对象。

返回:
表示时间值的 Date
另请参见:
setTime(Date), getTimeInMillis()

setTime

public final void setTime(Date date)
使用给定的 Date 设置此 Calendar 的时间。

注:使用 Date(Long.MAX_VALUE)Date(Long.MIN_VALUE) 调用 setTime() 可能产生来自 get() 的错误字段值。


参数:
date - 给定的 Date。
另请参见:
getTime(), setTimeInMillis(long)

getTimeInMillis

public long getTimeInMillis()
返回此 Calendar 的时间值,以毫秒为单位。

返回:
当前时间,以从历元至现在所经过的 UTC 毫秒数形式。
另请参见:
getTime(), setTimeInMillis(long)

setTimeInMillis

public void setTimeInMillis(long millis)
用给定的 long 值设置此 Calendar 的当前时间值。

参数:
millis - 新时间,以从历元至现在所经过的 UTC 毫秒数形式。
另请参见:
setTime(Date), getTimeInMillis()

get

public int get(int field)
返回给定日历字段的值。在 lenient 模式下,所有日历字段都被标准化。在 non-lenient 模式下,所有日历字段都是经过验证的,如果任何日历字段有超出范围的值,则此方法抛出一个异常。标准化和验证都是通过 complete() 方法处理的,这个过程与日历系统有关。

参数:
field - 给定的日历字段。
返回:
给定日历字段的值。
抛出:
ArrayIndexOutOfBoundsException - 如果指定字段超出范围 (field < 0 || field >= FIELD_COUNT)。
另请参见:
set(int,int), complete()

add

public abstract void add(int field,
                         int amount)
根据日历的规则,为给定的日历字段添加或减去指定的时间量。例如,要从当前日历时间减去 5 天,可以通过调用以下方法做到这一点:

add(Calendar.DAY_OF_MONTH, -5)


参数:
field - 日历字段。
amount - 为字段添加的日期或时间量。
另请参见:
roll(int,int), set(int,int)

set

public void set(int field,
                int value)
将给定的日历字段设置为给定值。不管处于何种宽松性模式下,该值都不由此方法进行解释。

参数:
field - 给定的日历字段。
value - 给定日历字段所要设置的值。
抛出:
ArrayIndexOutOfBoundsException - 如果指定字段超出范围 (field < 0 || field >= FIELD_COUNT),并且处于 non-lenient 模式下。
另请参见:
set(int,int,int), set(int,int,int,int,int), set(int,int,int,int,int,int), get(int)

set

public final void set(int year,
                      int month,
                      int date)
设置日历字段 YEARMONTHDAY_OF_MONTH 的值。保留其他日历字段以前的值。如果不需要这样做,则先调用 clear()。

参数:
year - 用来设置 YEAR 日历字段的值。
month - 用来设置 MONTH 日历字段的值。Month 值是基于 0 的。例如,0 表示 January。
date - 用来设置 DAY_OF_MONTH 日历字段的值。
另请参见:
set(int,int), set(int,int,int,int,int), set(int,int,int,int,int,int)

set

public final void set(int year,
                      int month,
                      int date,
                      int hourOfDay,
                      int minute)
设置日历字段 YEARMONTHDAY_OF_MONTHHOUR_OF_DAYMINUTE 的值。保留其他字段以前的值。如果不需要这样做,则先调用 clear()。

参数:
year - 用来设置 YEAR 日历字段的值。
month - 用来设置 MONTH 日历字段的值。Month 值是基于 0 的。例如,0 表示 January。
date - 用来设置 DAY_OF_MONTH 日历字段的值。
hourOfDay - 用来设置 HOUR_OF_DAY 日历字段的值。
minute - 用来设置 MINUTE 日历字段的值。
另请参见:
set(int,int), set(int,int,int), set(int,int,int,int,int,int)

set

public final void set(int year,
                      int month,
                      int date,
                      int hourOfDay,
                      int minute,
                      int second)
设置字段 YEARMONTHDAY_OF_MONTHHOURMINUTESECOND 的值。保留其他字段以前的值。如果不需要这样做,则先调用 clear()。

参数:
year - 用来设置 YEAR 日历字段的值。
month - 用来设置 MONTH 日历字段的值。Month 值是基于 0 的。例如,0 表示 January。
date - 用来设置 DAY_OF_MONTH 日历字段的值。
hourOfDay - 用来设置 HOUR_OF_DAY 日历字段的值。
minute - 用来设置 MINUTE 日历字段的值。
second - 用来设置 SECOND 日历字段的值。
另请参见:
set(int,int), set(int,int,int), set(int,int,int,int,int)


java解惑之Calendar

标签:java解惑

原文地址:http://blog.csdn.net/havedream_one/article/details/45091545

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