java 时间类型转换
1、 ①long型时间戳转为各类型时间。②各类型时间格式化解析为字符串。
这里所有时间日期都可以被SimpleDateFormat格式化format()
SimpleDateFormat f = new SimpleDateFormat(“yyyy/MM/dd HH:mm:ss:SSS”);(大小写有差别)
long timeMillis = f.parse(“2018/09/03 14:48:25:123”).getTime();
System.out.println(“sql.Timestamp format === ” + f.format(new java.sql.Timestamp(timeMillis)));
System.out.println(“util.Date format === ” + f.format(new java.util.Date(timeMillis)));
System.out.println(“sql.Date format === ” + f.format(new java.sql.Date(timeMillis)));
打印结果:
sql.Timestamp format === 2018/09/03 14:48:25:123
util.Date format === 2018/09/03 14:48:25:123
sql.Date format === 2018/09/03 14:48:25:123 我们发现java.sql.Date解析为String后和其它完全一样,那我们为什么不用java.sql.Date呢?
小结:
① long型的时间戳可以转换为任意时间类型,因此时间戳是最关键的共同点,可以借助这一特点互相转换,
特别注意,即便是java.sql.Date,也不会因为相互转换而丢失精度。
② 各类型时间解析为String值完全相同,说明java.sql.Date本身是有时间部分的精度,只是在读写数据库时
PreparedStament的setDate()方法和ResultSet的getDate()方法只取了java.sql.Date的日期部分,而丢掉了时间部分,
因此读写数据库不建议使用java.sql.Date 应该使用java.sql.Timestamp。
2、java.sql.Timestamp和 java.util.Date 互转:
java.sql.Timestamp dToTimestamp = new java.sql.Timestamp(new java.util.Date().getTime());
java.util.Date tspToDate = new java.util.Date(new java.sql.Timestamp(System.currentTimeMillis()).getTime());
3、字符串直接转Timestamp 要求 String的类型必须形如: yyyy-mm-dd hh:mm:ss[.f…] 这样的格式,中括号表示可选,否则报错
Timestamp ts = Timestamp.valueOf(“2018-07-27 15:25:11” );
4、日期计算的时候,使用java.util.Calendar非常方便
SimpleDateFormat format = new SimpleDateFormat(“yyyy-MM-dd”);
java.util.Calendar cal = Calendar.getInstance();//默认获取当前日期
//cal.setTime(format.parse(“2016-01-01”))//指定日期
//cal = new GregorianCalendar(2016, 01, 01, 16, 25, 34);//指定日期
String nowDate = format.format(cal.getTime());// 获取当前日期
cal.add(Calendar.MONTH, -1);// 获取上个月日期
System.out.println(“上月日期startDate = ” +format.format(cal.getTime()));
System.out.println(“当前日期 nowDate = ” + nowDate);
5、另类获取得年月日的方法,SimpleDateFormat解析日期
如果希望得到YYYYMMDD的格式SimpleDateFormat
sf=new SimpleDateFormat(“yyyy-MM-dd”);
String dateFormat=sf.format(date);
如果希望分开得到年,月,日SimpleDateFormat
sy=new SimpleDateFormat(“yyyy”);
SimpleDateFormat sm=new SimpleDateFormat(“MM”);
SimpleDateFormat sd=new SimpleDateFormat(“dd”);
String syear=sy.format(date);
String smon=sm.format(date);
String sday=sd.format(date);