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
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论