Java中包含了以下的日期和时间的处理类或方法
System类的一个静态方法,返回从1970年1月1日到现在的毫秒数。 | |
一个日期和时间的表示类,不过它里面的好多方法都是不推荐使用的。 | |
一个被JDBC使用的日期类,里面好多方法也是不推荐使用的 | |
一个被JDBC使用的时间类,里面好多方法也是不推荐使用的 | |
一个被JDBC使用的时间戳类 | |
一个基本的日历类,这个类提供了一些方法可以在一个日期上对年月日等做运算来得到另一个日期。 | |
java.util.Calendar类的一个具体子类,提供了世界上大多数国家/地区使用的标准日历系统。 | |
一个时区表示类,在跨时区表示日历时比较有用。 | |
一个日期转换类,提供日期类型和字符串之间的互相转换。 |
System.currentTimeMillis()
静态方法System.currentTimeMillis()返回1970-01-01 00:00:00.000到现在的毫秒数,返回值是一个long型
System.nanoTime()
顺便说一下System.nanoTime(),这也是一个静态方法,获得一个以纳秒为单位的值。但是它和日期或时间的表示没有任何关系,不要将它和当前的日期或时间联系起来。在上面我们看到System.currentTimeMillis()返回的是1970-01-01 00:00:00.000到现在的毫秒数,但System.nanoTime()返回的不是1970-01-01 00:00:00.000到现在的纳秒数,这个计时开始时间是不确定的。
Java.util.Date的创建
java.util.Date这个类可能是我们最常用的一个用来表示日期的类了。我们可以像下面这样初始化一个实例来表示当前日期和时间:
Java.sql.Date
java.sql.Date是在JDBC中使用的日期类,在JDBC操作中,如果需要设置一个日期或者从ResultSet获取日期值,就需要使用到java.sql.Date。实际上java.sql.Date继承自java.util.Date,是java.util.Date的一个子类,所以java.util.Date可以调用的方法在java.sql.Date中也可以调用。
- long time = System.currentTimeMillis();
- java.sql.Date date = new java.sql.Date(time);
java.sql.Time是JDBC中用来表示时间的类,它也是java.util.Date的子类,可以像下面一样创建一个Time实例:
- long timeNow = System.currentTimeMillis();
- java.sql.Time time = new java.sql.Time(timeNow);
java.sql.Timestamp
查 obj.get(Calendar.ABC)
- Calendar calendar = new GregorianCalendar();
- int year = calendar.get(Calendar.YEAR);
- int month = calendar.get(Calendar.MONTH); // 月份从0开始
- int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
- int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
- int weekOfYear = calendar.get(Calendar.WEEK_OF_YEAR);
- int weekOfMonth= calendar.get(Calendar.WEEK_OF_MONTH);
- int hour = calendar.get(Calendar.HOUR); // 12小时制
- int hourOfDay = calendar.get(Calendar.HOUR_OF_DAY); // 24小时制
- int minute = calendar.get(Calendar.MINUTE);
- int second = calendar.get(Calendar.SECOND);
- int millisecond= calendar.get(Calendar.MILLISECOND);
改 obj.set(Calendar.ABC , number)
- calendar.set(Calendar.YEAR, 2013);
- calendar.set(Calendar.MONTH, 11);
- calendar.set(Calendar.DAY_OF_MONTH, 24);
需要注意的地方
2、calendar类中使用1到7来表示周日到周六,1表示周日,7表示周六,比如calendar.get(Calendar.DAY_OF_WEEK)的值是3,那么表示周二。
Java.util.TimeZone是一个表示时区的类,如果需要跨时区转换日期,那么可以用java.util.Calendar和java.util.TimeZone联合完成。
可以用下面的方式来获取日历的时区:
时区转换
我们可以通过给日历设置时区,使日历在不同的时区转换,比如下面这个例子:
输出如下:
我们发现虽然两个时区的毫秒数是一样的,但是时间表示上却有9个小时的时差。那是因为毫秒数是根据UTC时间(世界标准时间)获取的,
但是时间表示在不同的时区是不同的。
Java.text.SimpleDateFormat类我们一般用来它实现字符串于java.util.Date之间的互转,比如将Date实例转换为指定的字符串表示形式,
或者将一个字符串的日期表示转为具体的Date实例。
日期转换成字符串
使用format()方法可以将一个日期类型的值转换为字符串表示形式,比如: