笔记总结:
/**与时间相关的类:System_Date_SimpleDateFormat_Calendar类 * 1.system 类下的currentTimeMillis() * 输出从1970年至今的时间的毫秒数, 运行两次即可用于统计时间间隔! * 2.Date() 类:java.util.Date : toString()/getTime()--返回long型64位整数 ; * 以及他的子类java.sql.Date * 3.SimpleDateFormat 类:(国际化) * 格式化: ①构造器: SimpleDateFormat() / SimpleDateFormat(String pattern) :常用pattern:"G yyyy:MM:dd 'at' HH:mm:ss " * ② String str=sdf.format(new Date()) : 利用sdf format一个Date()对象,格式化为字符串输出即可! * 解析: * ① 利用parse进行转换, Date date1=sdf.parse("18-10-20 上午10:55"); * ② 直接输出Date().toString() 显示Date() 的标准时间! * 4.Calendar 类: * ① Calendar c=Calendar.getInstance(); //实现Calendar的引用,因为它没有构造器 * ②get(field) / set(field,number) /add(field,number): number可以表示为正负数 * ③DAte getTime() /setTime()(Date d) */
测试代码:
public class TestDate { @Test//1.Date类 public void test1(){ Date d1=new Date(); System.out.println(d1.toString()); System.out.println(d1.getTime());long x=d1.getTime(); Date d2=new Date(x); System.out.println(d2); } @Test //2.SimpleDateFormat public void test2() throws Exception{ //1.格式化1,Date类型转String SimpleDateFormat sdf=new SimpleDateFormat(); String str=sdf.format(new Date()); System.out.println(str); //18-10-20 上午10:55 //2.格式化2 SimpleDateFormat sdf1=new SimpleDateFormat("yyyy-MM-dd 'at' HH:mm:ss"); str=sdf1.format(new Date()); System.out.println(str); //2018:10:20 at 11:10:53 //3.解析 ,字符串转 Date类型 Date date1=sdf.parse("18-10-20 上午10:55"); System.out.println(date1); //Sat Oct 20 10:55:00 CST 2018 Date date2=sdf1.parse("2018-10-20 at 10:55:32"); System.out.println(date2); } @Test //3.Calendar() get public void test4(){ Calendar c=Calendar.getInstance(); //实现Calendar的引用 System.out.println("今天是本月的第几天? "+c.get(Calendar.DAY_OF_MONTH)); System.out.println("今天的星期几: "+(c.get(Calendar.DAY_OF_WEEK)-1) ); //打印当前时分秒 int h=c.get(Calendar.HOUR_OF_DAY); //不要用Calendar.HOUR,不然12点就成了0点 int m=c.get(Calendar.MINUTE); int s=c.get(Calendar.SECOND); System.out.println("当前Calendar的 时分秒: "+h+":"+m+":"+s); c.set(Calendar.DAY_OF_MONTH,23); Date d=c.getTime(); System.out.println("更新后的Date时间: "+d); } }
输出结果:
Sat Oct 20 13:13:33 CST 2018 1540012413382 Sat Oct 20 13:13:33 CST 2018 18-10-20 下午1:13 2018-10-20 at 13:13:33 Sat Oct 20 10:55:00 CST 2018 Sat Oct 20 10:55:32 CST 2018 今天是本月的第几天? 20 今天的星期几: 6 当前Calendar的 时分秒: 13:13:33 更新后的Date时间: Tue Oct 23 13:13:33 CST 2018
后续补上-解决后缀.000Z 的时区问题
测试代码:
@Test public void test01() throws ParseException {
//方法一: 暴利删除后续字符 String s=new String("2019-01-31T16:00:00.00"); int pos=s.lastIndexOf("."); if(pos!=-1){ s=s.substring(0,pos); System.out.println(s); } SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); System.out.println(sdf.parse(s)+" "); //进行时区的转换 String date = "2016-08-15T16:00:00.000Z"; date = date.replace("Z", " UTC"); System.out.println(date); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS Z"); Date d = format.parse(date); System.out.println(d); }
输出结果:
2019-01-31T16:00:00 Thu Jan 31 16:00:00 CST 2019 2016-08-15T16:00:00.000 UTC Tue Aug 16 00:00:00 CST 2016
参考博客:
https://blog.csdn.net/m0_37983376/article/details/78202770 解决后缀.000Z 的时区问题
https://www.cnblogs.com/myseries/p/7589408.html java Date时间的各种转换方式和Mysql存时间类型字段的分析