javaDate ⽇期格式化
今天来整理⼀下中的⽇期类
1 时间原点的概念 ⼋种基本数据包括字符串最终都可以以数字的⽅式表现出来(数据就是⼆进制,⽽⼆进制是可以转换成10进制的) ⽇期类型类似,2022年1,1,也可以⽤⼀个数字来代替 在⽇期中最特殊的数字其实也是0,0这个⽇期代表的就是java中时间的原点——》1970,1,1 8,0,0  1969全球发布了第⼀个系统,综合考虑就认为1970 凡是在这个0点的基础上,过⼀毫秒,意味着+1
2 创建⽇期对象
3 getTime的使⽤ getTime()返回⼀个long整型 这个数代表从197011800开始每过⼀毫秒就增加1 直接打印对象会出现这样的⽇期格式:Wed Aug 28 14:39:16 CST 2019 可是阅读性差,需要转换成数字,⽅便阅读,⾄于格式化后⾯会讲
4 运⾏⼀段程序需要多少时间  //当前时间  Date date=new Date();  System.out.println(date);//Wed Aug 28 14:39:16 CST 2019  //从原点过了100秒的时间  //1970 01 01 08:00:00  100  //1970 01 01 08:01:40  100  //1000毫秒=1秒  100000=100s  Date date2=new Date(100000);、//也就是从原点时间过了100000毫秒  System.out.println(date2);//Thu Jan 01 08:01:40 CST 1970
1
2
3
4
5
6
7
8
9
10  Date now=new Date();  System.out.println(now);  //当前时间距离原点时间⼀共过了多少毫秒  System.out.Time());  //1566974943085  //如果要得到原点  Date zero=new Date(0);  System.out.Time());
1
2
3
4
5
6
7
8
9
5 System.currentTimeMills() 当前⽇期的毫秒数 理论上说getTime,currentTimeMills两个值应该是⼀样的,但是由于机器性能不相同,彼此相差⼏⼗毫秒,因为每⼀⾏代码实际上都需要时间来运⾏
运⾏结果为:
java时间日期格式转换704982704
1566994316913
6 ⽇期格式化 6.1 ⽇期格式化成字符串//计算⼀段程序运⾏了好久时间public class Damo4 { public static void main(String[] args) {  Damo4 damo4=new Damo4();  damo4.forTest(); } //观察⼀个程序执⾏多少时间  public long startTime() {  return new Date().getTime();  }    //10万次的for 循环  public  void forTest() {  long startTime=startTime();  int sum=0;  for(int i=1;i<100000;i++) {    sum+=i;    //new DateTest("name:"+i);  }  System.out.println(sum);  long endTime=endTime();  long result=endTime-startTime;  System.out.println(result);  }  public long endTime() {  return new Date().getTime();  }}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30  public void show() {  int sum=0;  for(int i=1;i<100000;i++) {    sum+=i;    //new DateTest("name:"+i);  }  System.out.println(sum);  System.out.println(System.currentTimeMillis());  }
1
2
3
4
5
6
7
8
9
10
11
6.2 字符串格式化成⽇期
注意:转⽇期类的时候需要注意格式必须匹配到⼀起,否则可能会报异常7 ⽇历 通过⽇历类管理⽇期  //y year 年  //m month ⽉  //d day ⽇  //h hour ⼩时  //m minute 分钟  //s seconds 秒  //s milliseconds 毫秒  SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SS");  Date now=new Date();  String nowStr=sdf.format(now);  System.out.println(nowStr);//2019-08-28 15:25:01 546
1
2
3
45
6
7
8
9
10
11
12  SimpleDateFormat sdf=new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");  String str="2019/8/28 11:12:01";  try {  Date date=sdf.parse(str);//DateForamt.parset(str)  System.out.println(date);//Unparseable date: "2019/8/28 11:12:01"  //Wed Aug 28 11:12:01 CST 2019  } catch (ParseException e) {  e.printStackTrace();  }
1
2
3
4
5
6
7
8
9
10
11
⽇历最佳实践案例:翻⽇历SimpleDateFormat;import java.util.Calendar;import java.util.Date;//util ⼯具//需求:打印当前时间,下个⽉的今天,上个⽉的今天,去年的今天,上个⽉的第三天public class TestDate01 { //设定打印的时间格式 //simpledateformat  private static SimpleDateFo
rmat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); public static void main(String[] args) {  //搞⼀个⽇历耍耍  Calendar Instance();    //获取今天  Date Time();  print(now);//2019-08-28 16:26:54  //下个⽉的今天——每个⽉有固定的天数28 29 30 31  //我要把今天加⼊⽇历  c.setTime(now);  //翻⽇历  c.add(Calendar.MONTH,1);//下个⽉的今天 1 就是⼀个⽉后多⼀天  //calendar.add(Calendar.MONTH, -3);//减号,就是前⼏个⽉。加号,就是往后⼏个⽉  //calendar.add(Calendar.DATE, -3);//减号,就是当前⽇期的前⼏天,加号,就是当前时间的后⼏天  //calendar.add(Calendar.YEAR, -3);//减号,就是当前年份的前⼏年,加号,就是当前年份的后⼏年  Date Time();  print(nextMonthNow);  //获取去年的今天  c.setTime(now);  c.add(Calendar.YEAR,-1);  Time());  //上个⽉的第三天  c.setTime(now);  c.add(Calendar.MONTH,-1);  //不改变⼤字段,改变⼩字段--不改年⽉改⽈  c.set(Calendar.DATE,3);  Time());  }  //打印格式 private static void print(Date date) {  System.out.println(sdf.format(date)); } }123456789101112131415161718192021222324252627282930313233343536373839404142434445464748