Java Calendar 类时间操作,这也许是创建和管理日历最简单的一个方案,示范代码很简单。
演示了获取时间,日期时间的累加和累减,以及比较。
注意事项:
Calendar 的 month 从 0 开始,也就是全年 12 个月由 0 ~ 11 进行表示。
而 Calendar.DAY_OF_WEEK 定义和值如下:
Calendar.SUNDAY = 1
Calendar.MONDAY = 2
Calendar.TUESDAY = 3
Calendar.WEDNESDAY = 4
Calendar.THURSDAY = 5
Calendar.FRIDAY = 6
Calendar.SATURDAY = 7
SimpleDateFormat 的格式定义
Letter | Date or Time Component | Presentation | Examples |
| Era designator |
| |
| Year |
| |
| Week year |
| |
| Month in year (context sensitive) |
| |
| Month in year (standalone form) |
| |
| Week in year |
| |
| Week in month |
| |
| Day in year |
| |
| Day in month |
| |
| Day of week in month |
| |
| Day name in week |
| |
| Day number of week (1 = Monday, ..., 7 = Sunday) |
| |
| Am/pm marker |
| |
| Hour in day (0-23) |
| |
| Hour in day (1-24) |
| |
| Hour in am/pm (0-11) |
| |
| Hour in am/pm (1-12) |
| |
| Minute in hour |
| |
| Second in minute |
| |
| Millisecond |
| |
| Time zone |
| |
| Time zone |
| |
| Time zone |
|
Java Calendar 演示代码如下:
1. package
2.
3. import
4. import
5. import
6. import
7. import
8.
9. public class
10. {
11. public
12. {
13. }
14.
15. public static void
16. {
17. // 字符串转换日期格式
18. // DateFormat fmtDateTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
19. // 接收传入参数
20. // String strDate = args[1];
21. // 得到日期格式对象
22. // Date date = fmtDateTime.parse(strDate);
23.
24. // 完整显示今天日期时间
25. new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS")).format(new
26. System.out.println(str);
27.
28. // 创建 Calendar 对象
29. Calendar calendar = Calendar.getInstance();
30.
31. try
32. {
33. // 对 calendar 设置时间的方法
34. // 设置传入的时间格式
35. new SimpleDateFormat("yyyy-M-d H:m:s");
36. // 指定一个日期
37. "2013-6-1 13:24:16");
38. // 对 calendar 设置为 date 所定的日期
39. calendar.setTime(date);
40.
41. // 按特定格式显示刚设置的时间
42. new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS")).format(calendar.getTime());
43. System.out.println(str);
44. }
45. catch
46. {
47. e.printStackTrace();
48. }
49.
50. // 或者另一種設置 calendar 方式
51. // 分別爲 year, month, date, hourOfDay, minute, second
52. calendar = Calendar.getInstance();
53. 2013, 1, 2, 17, 35, 44);
54. new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS")).format(calendar.getTime());
55. System.out.println(str);
56.
57. // Calendar 取得当前时间的方法
58. // 初始化 (重置) Calendar 对象
59. calendar = Calendar.getInstance();
60. // 或者用 Date 来初始化 Calendar 对象
61. new
62.
63. // setTime 类似上面一行
64. // Date date = new Date();
65. // calendar.setTime(date);
66.
67. new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS")).format(calendar.getTime());
68. System.out.println(str);
69.
70. // 显示年份
71. int
72. "year is = "
73.
74. // 显示月份 (从0开始, 实际显示要加一)
75. int
76. "nth is = " + (month + 1));
77.
78. // 本周几
79. int
80. "week is = "
81.
82. // 今年的第 N 天
83. int
84. "DAY_OF_YEAR is = "
85.
86. // 本月第 N 天
87. int
88. "DAY_OF_MONTH = "
89.
90. // 3小时以后
91. 3);
92. int
93. "HOUR_OF_DAY + 3 = "
94.
95. // 当前分钟数
96. int
97. "MINUTE = "
98.
99. // 15 分钟以后
100. 15);
101. MINUTE = calendar.get(Calendar.MINUTE);
102. "MINUTE + 15 = "
103.
104. // 30分钟前
105. 30);
106. MINUTE = calendar.get(Calendar.MINUTE);
107. "MINUTE - 30 = "
108.
109. // 格式化显示
110. new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS")).format(calendar.getTime());
111. System.out.println(str);
112.
113. // 重置 Calendar 显示当前时间
114. new
115. new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS")).format(calendar.getTime());
116. System.out.println(str);
117.
118. // 创建一个 Calendar 用于比较时间
119. Calendar calendarNew = Calendar.getInstance();
120.
121. // 设定为 5 小时以前,后者大,显示 -1
122. 5);
123. "时间比较:"
124.
125. // 设定7小时以后,前者大,显示 1
126. 7);
127. "时间比较:"
128.
129. // 退回 2 小时,时间相同,显示 0
130. 2);
131. "时间比较:"
132. }
133. }
要计算时间差,可用 Calendar.getTimeInMillis() 取得两个时间的微秒级的时间差,再加以换算即可,比如获得相差天数,代码如下:
1. // 得微秒级时间差
2. long
3. // 换算后得到天数
4. long day = val / (1000 * 60 * 60 * 24);
取昨天的日期,本想的截出来日期减一就好了。又一想不对,如果今天是一号怎么办?
现有两个办法
1:老方法
Date as = new Date(new Date().getTime()-24*60*60*1000);
SimpleDateFormat matter1 = new SimpleDateFormat("yyyy-MM-dd");
String time = matter1.format(as);
System.out.println(time);
取出数字型的时间 再减去24*60*60*1000,就得到昨天的时间了;
这个有点过时了!
2:
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, -1);
String yesterday = new SimpleDateFormat( "yyyy-MM-dd ").format(cal.getTime());
System.out.println(yesterday);
这个方法很方便,年月日都可以随心所欲的变!
3,用apache的DateUtils( 需要 import org.apache.commons.lang.time.DateUtils;)
Date currentTime = AppUtils.getCurrentDate();
//获取昨天时间
Date backupTime=DateUtils.addDays(currentTime, -1);
4.sql 查询条件包含时间的处理方法:
select * from TBIMC1 where CREATE_DATE_<to_date( to_char(sysdate-1,'yyyy-mm-dd'),'yyyy-mm-dd')