标签: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>
public static final int YEAR
get
和 set
的字段数字。这是一个特定于日历的值;请参阅子类文档。
public static final int MONTH
get
和 set
的字段数字。这是一个特定于日历的值。在格里高利历和罗马儒略历中一年中的第一个月是
JANUARY
,它为 0;最后一个月取决于一年中的月份数。
public static final int WEEK_OF_YEAR
get
和 set
的字段数字,指示当前年中的星期数。正如 getFirstDayOfWeek()
和
getMinimalDaysInFirstWeek()
所定义的那样,一年中第一个星期的值为 1。子类定义一年第一个星期之前的天数,即
WEEK_OF_YEAR
的值。
public static final int WEEK_OF_MONTH
get
和 set
的字段数字,指示当前月中的星期数。正如 getFirstDayOfWeek()
和
getMinimalDaysInFirstWeek()
所定义的那样,一个月中第一个星期的值为 1。子类定义一个月第一个星期之前的天数,即
WEEK_OF_MONTH
的值。
public static final int DATE
get
和 set
的字段数字,指示一个月中的某天。它与 DAY_OF_MONTH
是同义词。一个月中第一天的值为 1。
public static final int DAY_OF_MONTH
get
和 set
的字段数字,指示一个月中的某天。它与 DATE
是同义词。一个月中第一天的值为 1。
public static final int DAY_OF_YEAR
get
和 set
的字段数字,指示当前年中的天数。一年中第一天的值为 1。
public static final int DAY_OF_WEEK
get
和 set
的字段数字,指示一个星期中的某天。该字段可取的值为 SUNDAY
、MONDAY
、TUESDAY
、WEDNESDAY
、THURSDAY
、FRIDAY
和
SATURDAY
。
public static final int DAY_OF_WEEK_IN_MONTH
get
和 set
的字段数字,指示当前月中的第几个星期。与 DAY_OF_WEEK
字段一起使用时,就可以唯一地指定某月中的某一天。与
WEEK_OF_MONTH
和 WEEK_OF_YEAR
不同,该字段的值并不 取决于
getFirstDayOfWeek()
或 getMinimalDaysInFirstWeek()
。DAY_OF_MONTH
1 到 7
总是对应于 DAY_OF_WEEK_IN_MONTH 1
;8
到
14
总是对应于 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
的末尾相重叠。
public static final int AM_PM
get
和 set
的字段数字,指示 HOUR
是在中午之前还是在中午之后。例如,在 10:04:15.250 PM 这一时刻,AM_PM
为
PM
。
public static final int HOUR
get
和 set
的字段数字,指示上午或下午的小时。HOUR
用于 12 小时制时钟 (0 - 11)。中午和午夜用 0 表示,不用 12 表示。例如,在 10:04:15.250 PM 这一时刻,HOUR
为 10。
public static final int HOUR_OF_DAY
get
和 set
的字段数字,指示一天中的小时。HOUR_OF_DAY
用于 24 小时制时钟。例如,在 10:04:15.250 PM 这一时刻,HOUR_OF_DAY
为 22。
public static final int MINUTE
get
和 set
的字段数字,指示一小时中的分钟。例如,在 10:04:15.250 PM 这一时刻,MINUTE
为 4。
public static final int SECOND
get
和 set
的字段数字,指示一分钟中的秒。例如,在 10:04:15.250 PM 这一时刻,SECOND
为 15。
public static final int MILLISECOND
get
和 set
的字段数字,指示一秒中的毫秒。例如,在 10:04:15.250 PM 这一时刻,MILLISECOND
为 250。
public static final int SUNDAY
public static final int MONDAY
public static final int TUESDAY
public static final int WEDNESDAY
public static final int THURSDAY
public static final int FRIDAY
public static final int SATURDAY
public static final int JANUARY
public static final int FEBRUARY
public static final int MARCH
public static final int APRIL
public static final int MAY
public static final int JUNE
public static final int JULY
public static final int AUGUST
public static final int SEPTEMBER
public static final int OCTOBER
public static final int NOVEMBER
public static final int DECEMBER
public static final int UNDECIMBER
GregorianCalendar
没有使用该值,但阴历会使用。
protected long time
日历的当前设置时间,以毫秒为单位,表示自格林威治标准时间 1970 年 1月 1 日 0:00:00 后经过的时间。
public final Date getTime()
Calendar
时间值(从历元至现在的毫秒偏移量)的
Date
对象。Date
。public final void setTime(Date date)
Date
设置此 Calendar 的时间。
注:使用 Date(Long.MAX_VALUE)
或 Date(Long.MIN_VALUE)
调用
setTime()
可能产生来自 get()
的错误字段值。
date
- 给定的 Date。public long getTimeInMillis()
public void setTimeInMillis(long millis)
millis
- 新时间,以从历元至现在所经过的 UTC 毫秒数形式。public int get(int field)
field
- 给定的日历字段。ArrayIndexOutOfBoundsException
- 如果指定字段超出范围 (field < 0 || field >= FIELD_COUNT
)。public abstract void add(int field,
int amount)
add(Calendar.DAY_OF_MONTH, -5)
。
field
- 日历字段。amount
- 为字段添加的日期或时间量。public void set(int field,
int value)
field
- 给定的日历字段。value
- 给定日历字段所要设置的值。ArrayIndexOutOfBoundsException
- 如果指定字段超出范围 (field < 0 || field >= FIELD_COUNT
),并且处于 non-lenient 模式下。public final void set(int year,
int month,
int date)
YEAR
、MONTH
和
DAY_OF_MONTH
的值。保留其他日历字段以前的值。如果不需要这样做,则先调用 clear()。year
- 用来设置 YEAR
日历字段的值。month
- 用来设置 MONTH
日历字段的值。Month 值是基于 0 的。例如,0 表示 January。date
- 用来设置 DAY_OF_MONTH
日历字段的值。public final void set(int year,
int month,
int date,
int hourOfDay,
int minute)
YEAR
、MONTH
、DAY_OF_MONTH
、HOUR_OF_DAY
和
MINUTE
的值。保留其他字段以前的值。如果不需要这样做,则先调用 clear()。year
- 用来设置 YEAR
日历字段的值。month
- 用来设置 MONTH
日历字段的值。Month 值是基于 0 的。例如,0 表示 January。date
- 用来设置 DAY_OF_MONTH
日历字段的值。hourOfDay
- 用来设置 HOUR_OF_DAY
日历字段的值。minute
- 用来设置 MINUTE
日历字段的值。public final void set(int year,
int month,
int date,
int hourOfDay,
int minute,
int second)
YEAR
、MONTH
、DAY_OF_MONTH
、HOUR
、MINUTE
和
SECOND
的值。保留其他字段以前的值。如果不需要这样做,则先调用 clear()。year
- 用来设置 YEAR
日历字段的值。month
- 用来设置 MONTH
日历字段的值。Month 值是基于 0 的。例如,0 表示 January。date
- 用来设置 DAY_OF_MONTH
日历字段的值。hourOfDay
- 用来设置 HOUR_OF_DAY
日历字段的值。minute
- 用来设置 MINUTE
日历字段的值。second
- 用来设置 SECOND
日历字段的值。标签:java解惑
原文地址:http://blog.csdn.net/havedream_one/article/details/45091545