1.java.sql.Timestamp
我们从数据库中取到的具体时间一般是java.sql.Timestamp类型的。java.sql.Timestamp是java.util.Date的子类。java.sql.Timestamp包含日期和时间,而java.sql.Date只包含日期。
它通过允许小数秒到纳秒级精度的规范来添加保存 SQL TIMESTAMP
小数秒值的能力。
计算 Timestamp 对象的精度为二者之一:
19
,其为 yyyy-mm-dd hh:mm:ss 格式下的字符数20 + s
,其为 yyyy-mm-dd hh:mm:ss.[fff...] 格式下的字符数,s
表示给定 Timestamp 的标度(其小数秒精度)。
此类型由 java.util.Date
和单独的毫微秒值组成。只有整数秒才会存储在 java.util.Date
组件中。小数秒(毫微秒)是独立存在的。传递不是 java.sql.Timestamp
实例的对象时,Timestamp.equals(Object)
方法永远不会返回 true
,因为日期的毫微秒组件是未知的。因此,相对于 java.util.Date.equals(Object)
方法而言,Timestamp.equals(Object)
方法是不对称的。此外,hashcode
方法使用底层 java.util.Date
实现并因此在其计算中不包括毫微秒。
鉴于 Timestamp
类和上述 java.util.Date
类之间的不同,建议代码一般不要将 Timestamp
值视为 java.util.Date
的实例。Timestamp
和 java.util.Date
之间的继承关系实际上指的是实现继承,而不是类型继承。
toString和valueOf方法使用 JDBC 时间戳转义格式编排时间戳。yyyy-mm-dd hh:mm:ss.fffffffff
,其中 ffffffffff
指示毫微秒。
2.java.sql.Time
此类类似于java.sql.Date,表示时间。
常用的方法:
Time(long time) 使用毫秒时间值构造 Time 对象。 |
String |
toString() 使用 JDBC 时间转义格式对时间进行格式化。 |
static Time |
valueOf(String s)
将使用 JDBC 时间转义格式的字符串转换为 Time 值。 |
返回的时间字符格式是:hh:mm:ss
3.java.sql.Calendar
Calendar类用的不是特别多,它是一个抽象类,我们常常使用getInstance()去获取它的对象,或使用它的子类java.util.GregorianCalendar。它可以取出日期中的某一部分(比如年,月,日,时,分,秒等等)。下面是Calendar的操作用法。
Calendar中使用get()方法取出想要的部分;
以下是Calendar中常用的常量
YEAR + MONTH + DAY_OF_MONTH YEAR + MONTH + WEEK_OF_MONTH + DAY_OF_WEEK YEAR + MONTH + DAY_OF_WEEK_IN_MONTH + DAY_OF_WEEK YEAR + DAY_OF_YEAR YEAR + DAY_OF_WEEK + WEEK_OF_YEAR
HOUR_OF_DAY AM_PM + HOUR
摘自http://blog.csdn.net/joyous/article/details/9630893
1 package MyTest; 2 3 /* 4 * 演示 Calendar 的一般操作 5 */ 6 import java.util.Date; 7 import java.text.SimpleDateFormat; 8 import java.text.DateFormat; 9 import java.util.Calendar; 10 11 public class Test 12 { 13 public Test() 14 { 15 } 16 17 public static void main(String[] args) 18 { 19 // 字符串转换日期格式 20 DateFormat fmtDateTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 21 // 得到日期格式对象 22 Date date = fmtDateTime.parse(strDateMake); 23 24 // 完整显示日期时间 25 String str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS")).format(new Date()); 26 System.out.println(str); 27 28 // 创建 Calendar 对象 29 Calendar calendar = Calendar.getInstance(); 30 // 初始化 Calendar 对象,但并不必要,除非需要重置时间 31 calendar.setTime(new Date()); 32 33 // setTime 类似上面一行 34 // Date date = new Date(); 35 // calendar.setTime(date); 36 37 // 显示年份 38 int year = calendar.get(Calendar.YEAR); 39 System.out.println("YEAR is = " + String.valueOf(year)); 40 41 // 显示月份 (从0开始, 实际显示要加一) 42 int MONTH = calendar.get(Calendar.MONTH); 43 System.out.println("MONTH is = " + (MONTH + 1)); 44 45 // 今年的第 N 天 46 int DAY_OF_YEAR = calendar.get(Calendar.DAY_OF_YEAR); 47 System.out.println("DAY_OF_YEAR is = " + DAY_OF_YEAR); 48 49 // 本月第 N 天 50 int DAY_OF_MONTH = calendar.get(Calendar.DAY_OF_MONTH); 51 System.out.println("DAY_OF_MONTH = " + String.valueOf(DAY_OF_MONTH)); 52 53 // 3小时以后 54 calendar.add(Calendar.HOUR_OF_DAY, 3); 55 int HOUR_OF_DAY = calendar.get(Calendar.HOUR_OF_DAY); 56 System.out.println("HOUR_OF_DAY + 3 = " + HOUR_OF_DAY); 57 58 // 当前分钟数 59 int MINUTE = calendar.get(Calendar.MINUTE); 60 System.out.println("MINUTE = " + MINUTE); 61 62 // 15 分钟以后 63 calendar.add(Calendar.MINUTE, 15); 64 MINUTE = calendar.get(Calendar.MINUTE); 65 System.out.println("MINUTE + 15 = " + MINUTE); 66 67 // 30分钟前 68 calendar.add(Calendar.MINUTE, -30); 69 MINUTE = calendar.get(Calendar.MINUTE); 70 System.out.println("MINUTE - 30 = " + MINUTE); 71 72 // 格式化显示 73 str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS")).format(calendar.getTime()); 74 System.out.println(str); 75 76 // 重置 Calendar 显示当前时间 77 calendar.setTime(new Date()); 78 str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS")).format(calendar.getTime()); 79 System.out.println(str); 80 81 // 创建一个 Calendar 用于比较时间 82 Calendar calendarNew = Calendar.getInstance(); 83 84 // 设定为 5 小时以前,后者大,显示 -1 85 calendarNew.add(Calendar.HOUR, -5); 86 System.out.println("时间比较:" + calendarNew.compareTo(calendar)); 87 88 // 设定7小时以后,前者大,显示 1 89 calendarNew.add(Calendar.HOUR, +7); 90 System.out.println("时间比较:" + calendarNew.compareTo(calendar)); 91 92 // 退回 2 小时,时间相同,显示 0 93 calendarNew.add(Calendar.HOUR, -2); 94 System.out.println("时间比较:" + calendarNew.compareTo(calendar)); 95 } 96 }
4.世界时
科普下,以下几个概念可视为相同:
格林威治标准时 (GMT)==世界时 (UT)==世界时 (UTC)
一般我们获得的时间,是计算机从系统中获取默认的时区得到的时间,那么我们怎么查看其它时区的当前时间呢?
在java中,java.util.TimeZone是一个时区类,使用TimeZone.getTimeZone(String ID)可以获得对应ID的时区。
例子:
1 import java.util.Calendar; 2 import java.util.GregorianCalendar; 3 import java.util.TimeZone; 4 5 6 public class TestUT { 7 8 public static void main(String[] args) { 9 Calendar c=new GregorianCalendar(TimeZone.getTimeZone("Japan")); 10 System.out.println(c.get(Calendar.HOUR_OF_DAY)); 11 12 } 13 14 }
那么我们怎么知道有哪些ID呢?通过TimeZone.getAvailableIDs(),可以得到能使用的ID
1 import java.util.TimeZone; 2 3 public class TestUT { 4 5 public static void main(String[] args) { 6 for(String s:TimeZone.getAvailableIDs()){ 7 System.out.println(s); 8 } 9 } 10 11 }
5.获取当前时间
- System.currentTimeMillis(); 常用于测试代码效率,计算运行时间。
- new Date(); 将当前时间转为Date对象。
- Calendar.getInstance();