一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 深入理解java long 存儲時間戳

深入理解java long 存儲時間戳

2021-06-06 13:40鯨冬香 Java教程

存儲時間打算用時間戳來存儲,打算用long類型來代表時間戳,這篇文章主要介紹了深入理解java long 存儲時間戳,非常具有實用價值,需要的朋友可以參考下

存儲時間打算用時間戳來存儲,打算用long類型來代表時間戳,但是在用long類型存儲時間戳的時候出了點問提。

在寫單元測試的時候,用一個long類型來存儲時間戳,發(fā)現(xiàn)編譯器報錯了

深入理解java long 存儲時間戳

剛開始猜想可能是因為long不夠大,存儲不了。然后用double類型來存:

深入理解java long 存儲時間戳

發(fā)現(xiàn)還是報錯了,仔細想想不對,double存儲的數(shù)量應該時很大的,不會連時間戳都存儲不了。
在后面加上小數(shù)點之后,居然可以存了:

深入理解java long 存儲時間戳

加了小數(shù)點之后就能存了,仔細一想,之前沒加小數(shù)點的時候他是整數(shù),加了小數(shù)點之后變成了浮點數(shù),猜測之前沒加上小數(shù)點的時間戳是一個整形的字面值,加上小數(shù)點后是一個浮點數(shù)的字面值,之前的報錯應該不是存儲類型的問題,而是字面值范圍超出了。

用字符串來測試:

深入理解java long 存儲時間戳

把時間戳變成字符串的字面值,在將他解析成long類型的和int類型的,然后在把他們輸出:

深入理解java long 存儲時間戳

發(fā)現(xiàn)第一個long類型的成功輸出了,而int類型的卻報了一個number的錯誤.

這說明long是可以存儲時間戳的,而int存儲不了時間戳,所以判斷之前不能存儲時因為字面值為整形超出了范圍。

java 各種日期/時間 對象轉long時間戳

?
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
package cn.xbz;
 
import java.text.simpledateformat;
import java.time.*;
import java.time.format.datetimeformatter;
import java.util.calendar;
import java.util.date;
 
/**
 * @title 各種日期/時間對象轉時間戳
 * @author xingbz
 * @createdate 2018-5-18
 */
public class datetime2millisdemo {
 
 private static final string format_str = "yyyy-mm-dd hh:mm:ss";
 
 public static void main(string[] args) {
  system.out.println("====== jdk7及之前 ======");
  long l1 = getmillis1();
  long l2 = date2millis(new date());
  long l3 = calendar2millis(calendar.getinstance());
  long l4 = string2millis(new simpledateformat(format_str).format(new date()) , format_str);//為了與以上幾個保持一致
  system.out.println(l1 + "\n" + l2 + "\n" + l3 + "\n" + l4);//會有幾毫秒的差別
 
  system.out.println("====== jdk8 ======");
  long l5 = getmillis2();
  long l6 = localdatetime2millis(localdatetime.now());
  long l7 = localdate2millis(localdate.now());
  long l8 = clock2millis(clock.systemutc());
  long l9 = zonedatetime2millis(zoneddatetime.now());
  long l10 = string2milliswithjdk8(localdatetime.now().format(datetimeformatter.ofpattern(format_str)) , format_str);//為了與以上幾個保持一致
  system.out.println(l5 + "\n" + l6 + "\n" + l7 + "\n" + l8 + "\n" + l9 + "\n" + l10);//會有幾毫秒的差別
 }
 
 /* jdk7及之前 */
 
 /** 獲取時間戳 */
 public static long getmillis1() {
  return system.currenttimemillis();
 }
 
 /** date轉時間戳 */
 public static long date2millis(date date) {
  return date.gettime();
 }
 
 /** calendar轉時間戳 */
 public static long calendar2millis(calendar calendar) {
  return calendar.gettime().gettime();
 }
 
 /** 日期字符串轉時間戳 */
 public static long string2millis(string datestr, string formatstr) {
  try {
   simpledateformat simpledateformat = new simpledateformat(formatstr);
   return simpledateformat.parse(datestr).gettime();
  } catch (exception e) {
   return 0l;
  }
 }
 
 /* jdk8 */
 
 /** 獲取時間戳 */
 public static long getmillis2() {
  return instant.now().toepochmilli();
 }
 
 /** localdatetime轉時間戳 */
 public static long localdatetime2millis(localdatetime localdatetime) {
  return localdatetime.toinstant(zoneoffset.ofhours(8)).toepochmilli();
 }
 
 /** localdate轉時間戳 */
 public static long localdate2millis(localdate localdate) {
  return localdatetime.of(localdate, localtime.min).toinstant(zoneoffset.ofhours(8)).toepochmilli();
 }
 
 /** clock轉時間戳 */
 public static long clock2millis(clock clock) {
  return clock.millis();
 }
 
 /** zonedatetime轉時間戳(這個不常用吧~) */
 public static long zonedatetime2millis(zoneddatetime zoneddatetime) {
  return zoneddatetime.tolocaldatetime().toinstant(zoneoffset.ofhours(8)).toepochmilli();//!!!好費勁
 }
 
 /** string轉時間戳(jdk8) */
 public static long string2milliswithjdk8(string datestr , string formatstr) {
  return localdatetime.parse(datestr , datetimeformatter.ofpattern(formatstr)).toinstant(zoneoffset.ofhours(8)).toepochmilli();
 }
}

輸出如下 :

深入理解java long 存儲時間戳

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://segmentfault.com/a/1190000016727089

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 男人的天堂久久 | 114毛片免费观看网站 | 奇米777狠狠 | 国产精品思瑞在线观看 | 91制片厂果冻星空传媒3xg | 蜜桃在线 | 日本人成在线视频免费播放 | 欧美同志video 在线观看 | 日本又黄又裸一级大黄裸片 | 色播影院性播影院私人影院 | 亚洲成人一区在线 | 国产亚洲欧美成人久久片 | 国产精品99久久久 | 四虎影视在线影院在线观看观看 | 亚洲国产日韩制服在线观看 | 亚洲午夜精品久久久久 | 国产精品免费看香蕉 | 波多野结衣两女调教 | 精品欧美 | 午夜大片在线观看 | 免费看隐私男生网站 | 欧美性野久久久久久久久 | 欧美男人的天堂 | 韩日视频在线 | 明星裸乳照无奶罩 | 国产麻豆精品原创 | 99视频福利| 门房秦大爷在线阅读 | 欧美18一19性高清hd4k | 俄罗斯大白屁股 | 欧美成人精品福利在线视频 | 亚洲色欲色欲综合网站 | 日本小视频网站 | 欧美午夜精品 | 楚乔传第二部免费观看全集完整版 | 爱爱小视频免费看 | 四虎永久在线精品波多野结衣 | 日韩精品免费一区二区 | 希岛爱理aⅴ在线中文字幕 午夜综合网 | 精品国产美女福利在线 | 国产玖玖在线观看 |