Java 日期时间处理
一、时间相关类
java.lang.System
java.util.Date
java.util.Calendar
java.util.GregorianCalendar
java.util.TimeZone
java.text.DateFormat
java.text.DateSimpleFormat
java.sql.Date
java.sql.Time
java.sql.Timestamp
二、各个类之间的关系
三、常见问题及解决
1、什么是UTC/UT?
UTC:世界标准时间
UT:世界时间
2、什么是GMT?
格林威治标准时间
3、怎样获取当前时间?
//在1970年1月1日UTC之间的当前时间和午夜之间的差异,以毫秒为单位。
long ctm = System.currentTimeMillis();
//分配一个 Date对象并对其进行初始化,以便它表示分配的时间,测量到最近的毫秒。
Date d = new Date();
//使用默认时区和区域设置获取日历。 Calendar返回的是基于默认时区的当前时间,默认为FORMAT区域设置。
Calendar cal = Calendar.getInstance(); //Calendar是抽象类,不能直接实例化
System.out.println(ctm); //1535808760490
System.out.println(d); //Sat Sep 01 21:32:40 CST 2018
System.out.println(cal); //包含所有日期相关的属性,可以通过get()方法获得对应属性的值
4、怎样格式化时间?
Date d = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh-mm-ss"); // yyyy-MM-dd hh-mm-ss可以替换,具体类型可以查找Java API
String tssdf = sdf.format(d);
5、怎样将一个字符串转换为日期/时间格式?
java.util.Date中的获取单个时间日期的方法已被废弃,要获取这类值,可以使用java.util.Calendar中的相关方法。
示例:
Calendar cj=new GregorianCalendar(TimeZone.getTimeZone("PRC")); //中国时间
int hod=cj.get(Calendar.HOUR_OF_DAY); //该方法返回int型
System.out.println("24小时制小时: "+hod); //24小时制小时
System.out.println("12小时制小时: "+cj.get(Calendar.HOUR)); //12小时制小时
System.out.print(cj.get(Calendar.HOUR_OF_DAY)+" 时 "); //12小时制小时
System.out.print(cj.get(Calendar.MINUTE)+" 分 "); //分钟
System.out.println(cj.get(Calendar.SECOND)+" 秒"); //秒
System.out.println("毫秒: "+cj.get(Calendar.MILLISECOND)); //毫秒
System.out.print(cj.get(Calendar.YEAR)+" 年 "); //年
System.out.print((cj.get(Calendar.MONTH)+1)+" 月 "); //月
System.out.println(cj.get(Calendar.DATE)+" 日"); //日
示例输出:
24小时制小时: 22
12小时制小时: 10
22 时 56 分 7 秒
毫秒: 559
2018 年 9 月 1 日
6、怎样处理从数据库中获取的日期/时间?
日期格式化:
Date d = res.getDate("stu_date"); //获取日期(只包含年月日)
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
String dsdf = sdf.format(d); // 2018年07月25日
时间格式化:
Time t = res.getTime("stu_date"); //获取时间(只包含时分秒)
SimpleDateFormat sdf = new SimpleDateFormat("hh时mm分ss秒");
String tsdf = sdf.format(t); // 12时13分35秒
完整时间格式化:
Timestamp ts = res.getTimestamp("stu_date");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh-mm-ss");
String tssdf = sdf.format(ts);