一、java.util.Date类
1、java.util.Date类中大部分方法都已经过时。
例
import java.util.Date; public class Test29 { public static void main(String args[]){ /* boolean after(Date when)测试此日期是否在指定日期之后 boolean before(Date when)测试此日期是否在指定日期之前 Object clone()返回此对象的副本 int compareTo()比较两个日期的顺序 boolean equals(Object obj)比较两个日期的相等性 String toString()把此 Date 对象转换为以下形式的 String: dow mon dd hh:mm:ss zzz yyyy 其中: dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat) */ Date date = new Date();//得到当前系统CST时间 System.out.println(date); Date date1 = new Date(1000);//从标准时间1970/1/1/08/00开始+1000毫秒 System.out.println(date1); System.out.println(date.equals(date1)); } }
二、TimeZone类
1、TimeZone表示时区偏移量,也可以计算夏令时
例
import java.util.*; public class Test2 { public static void main(String args[]){ TimeZone timeZone = TimeZone.getDefault();//获取默认的时区 System.out.println(TimeZone.LONG);//Long是TimeZone类中的常量,用来表示长名称的时区,值为1 System.out.println(TimeZone.SHORT);//Short是TimeZone类中的常量,用来表示端名称的时区,值为0 String str[] = TimeZone.getAvailableIDs();//getAvailableIDs()是TimeZone中的静态方法,返回所有可用的时区ID System.out.println(timeZone.getOffset(3600000));//从给定的日期的UTC,返回此时区的偏移量,在夏令时可修改 /*public abstract int getOffset(int era,int year,int month,int day,int dayOfWeek,int milliseconds) era表示年代,BC公元前,AD公元 month是从0开始,0则表示的一月 public abstract int getRawOffset()返回添加到 UTC 以获取此时区中的标准时间的时间量(以毫秒为单位)。因为此值不受夏令时的影响,所以它称为原始偏移量。 */ Locale locale = Locale.getDefault(); System.out.println(timeZone.getDisplayName()); System.out.println(timeZone.getDisplayName(false,0));//style只能是0和1,对应的是TimeZone的Long和Short字段 System.out.println(timeZone.getDisplayName(false,1,locale)); System.out.println(timeZone.getOffset(1)); timeZone.setRawOffset(3600000+28800000);//28800000是中国标准时间对UTC的默认偏移量 TimeZone.setDefault(timeZone);//将修改后的时区设置成默认时区 System.out.println(new Date());//打印出现在的时间,会发现原本偏移UTC8个小时,现在偏移了9个小时 // public int getDSTSavings()返回添加到本地标准时间以获取本地挂钟时间的时间量。 如果调用useDaylightTime()返回true则默认实现返回3600000毫秒(即一小时)。 否则返回0(零)。 TimeZone timeZone1 = TimeZone.getTimeZone("GMT+1"); /*自定义时区需要进行标准化,例“GMT + 10”和“GMT + 0010”分别表示GMT前10小时10分钟。 NormalizedCustomID: GMT Sign TwoDigitHours : Minutes Sign: one of + - TwoDigitHours: Digit Digit Minutes: Digit Digit Digit: one of 0 1 2 3 4 5 6 7 8 9 */ TimeZone.setDefault(timeZone1); System.out.println(timeZone1.getID()); //SimpleTimeZone是TimeZone的直接子类,下面给出自定义的SimpleTimeZone实例 SimpleTimeZone simpleTimeZone = new SimpleTimeZone(28800000,"WXW",Calendar.MAY, 18,-Calendar.FRIDAY,57600000,SimpleTimeZone.STANDARD_TIME,10,1, 2,8,SimpleTimeZone.STANDARD_TIME,3600000); /* SimpleTimeZone(int rawOffset, String ID, int startMonth, int startDay, int startDayOfWeek, int startTime, int startTimeMode, int endMonth, int endDay, int endDayOfWeek, int endTime, int endTimeMode, int dstSavings) 参数说明: rawOffset:偏移量 ID:simpleTimeZone的ID startMonth:取Calendar的月份字段 startDay:该月的具体日期 startDayOfWeek:取Calendar中的星期字段,从前往后数加-,从后往前定义不加符号,实例中是指5月18号第二个星期五 startTime:夏令时开始的时间,单位为毫秒 startTimeMode:取SimpleTimeZone的字段 STANDARD_TIME :作为标准时间指定的开始或结束时间模式的常数 WALL_TIME :指定为挂钟时间的开始或结束时间模式的常数,设置当本地时间达到多少时间时开始夏令时。 UTC_TIME :指定为UTC的开始或结束时间模式的常数。 设置UTC时间达到多少时,开始夏令时。 dstSavings:夏令时提前的时间,单位毫秒 */ System.out.println(simpleTimeZone); TimeZone.setDefault(simpleTimeZone); Calendar calendar = Calendar.getInstance(); System.out.println(calendar.getTimeInMillis()); Date date = new Date(calendar.getTimeInMillis()-86400000); System.out.println(date);//得到5月17日的日期 System.out.println(simpleTimeZone.inDaylightTime(date));//测试5月17日是否在夏令时中 System.out.println(simpleTimeZone.getDSTSavings());//获取夏令时提前量 System.out.println(simpleTimeZone.getRawOffset());//获取夏令时偏移量 System.out.println(new Date());//处于夏令时的当前时间 } }