日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

本文介紹了無法將日期轉換為紀元時間的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

這是我的示例代碼

    String dt = "Oct 24 2019 12:00:00.000 AM UTC";
    String dt1="Oct 24 2019 11:59:59.000 PM UTC";
    SimpleDateFormat df = new SimpleDateFormat("MMM dd yyyy HH:mm:ss.SSS 
    aa zzz");
    Date date = df.parse(dt);
    Date date1 = df.parse(dt1);
    long epoch = date.getTime();
    long epoch1 = date1.getTime();
    System.out.println(epoch);
    System.out.println(epoch1);

此處指定AM和PM,但不接受該值并將異常拋出為

{"error_code":"INVALID_PARAMETER_VALUE","message":"Time range must have a start time earlier than the end time"}

如何在Java代碼中指定AM/PM。
如何在Java代碼中將昨天的日期和時間作為輸入以轉換為紀元。

推薦答案

tl;dr

ZonedDateTime
.parse(
    "Oct 24 2019 12:00:00.000 AM UTC" ,
    DateTimeFormatter.ofPattern( "MMM d uuuu hh:mm:ss.SSS a z" ).withLocale( Locale.US ) 
)
.toInstant() 
.toEpochMilli() 

1571875200000

java.time

兩個問題:

作為commented by Heuberger,您使用的格式代碼不正確。
您正在使用幾年前被現代java.time類取代的糟糕的Date-Time類。

為清楚起見,已重命名您的輸入。

String inputStart = "Oct 24 2019 12:00:00.000 AM UTC";
String inputStop = "Oct 24 2019 11:59:59.000 PM UTC";

定義與您的輸入匹配的格式模式。

DateTimeFormatter f = DateTimeFormatter.ofPattern( "MMM d uuuu hh:mm:ss.SSS a z" ).withLocale( Locale.US );

分析輸入。

ZonedDateTime zdtStart = ZonedDateTime.parse( inputStart , f );
ZonedDateTime zdtStop = ZonedDateTime.parse( inputStop , f );

計算運行時間。我們應該比24小時少一秒。

Duration d = Duration.between( zdtStart , zdtStop );

顯然,您想要的是自UTC,1970-01-01T00:00Z中1970年第一個時刻的紀元參考以來的毫秒數。首先從每個ZonedDateTime中提取構建塊類InstantInstant表示UTC中的時刻。這門課讓你審問自紀元以來的伯爵。注意,java.time類以納秒為單位進行解析。因此,請求毫秒可能會導致數據丟失,忽略任何微秒或納秒。

Instant start = zdtStart.toInstant() ;
Instant stop = zdtStop.toInstant() ;

long millisStart = start.toEpochMilli() ;
long milliStop = stop.toEpochMilli() ;

轉儲到控制臺。

System.out.println( "zdtStart = " + zdtStart );
System.out.println( "zdtStop = " + zdtStop );
System.out.println( "d = " + d );

System.out.println( "start = " + start );
System.out.println( "stop = " + stop );

System.out.println( "millisStart = " + millisStart );
System.out.println( "milliStop = " + milliStop );

zdtStart=2019-10-24T00:00Z[UTC]

zdtStop=2019-10-24T23:59:59Z[UTC]

d=PT23H59M59S

開始=2019-10-24T00:00:00Z

Stop=2019-10-24T23:59:59Z

毫秒開始=1571875200000

毫秒停止=1571961599000



關于java.time

java.time框架內置于Java 8及更高版本中。這些類取代了麻煩的舊legacy日期-時間類,如java.util.DateCalendar、&SimpleDateFormat

要了解更多信息,請參閱Oracle Tutorial。和搜索堆棧溢出以獲取許多示例和解釋。規范為JSR 310。

Joda-Time項目現在位于maintenance mode中,建議遷移到java.time類。

您可以直接與數據庫交換java.time對象。使用符合JDBC 4.2或更高版本的JDBC driver。不需要字符串,也不需要java.sql.*類。

從哪里獲取java.time類?

Java SE 8Java SE 9Java SE 10Java SE 11以及更高版本–標準Java API的一部分,具有捆綁實現。

Java 9添加了一些次要功能和修復。

Java SE 6Java SE 7

大部分java.time功能已后移植到ThreeTen-Backport中的Java 6&7。

Android

更高版本的Android綁定實現java.time類。
對于更早版本的Android(<26),ThreeTenABP項目適配ThreeTen-Backport(如上所述)。請參閱How to use ThreeTenABP…

ThreeTen-Extra項目使用其他類擴展了java.time。該項目為將來可能添加到java.time中提供了一個試驗場。您可以在此處找到一些有用的類,如IntervalYearWeekYearQuarter和more。

這篇關于無法將日期轉換為紀元時間的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,

分享到:
標簽:日期 時間 紀元 轉換為
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定