我得到一個格式為 "20210908094049.884Z "的時間戳。這是LDAP物件的最后修改時間戳。我使用Spring Boot Ldap。我不知道如何將這個字串決議為像dd.MM.yyy HH:mm這樣的日期時間,
。有人能幫助我嗎?
uj5u.com熱心網友回復:
這里有一個例子:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date。
public class Main {
public static void main(String[] args){
///用你給的格式創建新的簡單日期格式器。
SimpleDateFormat format = new SimpleDateFormat("yyyMMddHmmss. SSS")。)
//定義輸入日期。
String inputDate = "20210908094049.884Z"。
//決議日期,如果日期格式錯誤,捕捉決議例外。
Date date = null。
try {
// Date ends on a Z, we remove this Z (Z is for timezone UTC 0:00)
date = format.parse(inputDate.replace("Z", "") )。
System.out.println(date)。
} catch (ParseException e) {
e.printStackTrace()。
}
}
給出以下輸出:
Wed Sep 08 09:40:49 CEST 2021
編輯: 這里是Ole V.V.的另一個更好的解決方案
。import java.time.Instant;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args){
Instant instant = DateTimeFormatter
//defining pattern to parse
.ofPattern("yyyMMddHHmmss.SSSXX")
//定義要用模式決議的輸入。
.parse("20210908094049.884Z", Instant::from);
System.out.println(instant)。
}
}
輸出是一個帶值的即時資訊:
2021-09-08T09:40:49.884Z
uj5u.com熱心網友回復:
java.time
我推薦你使用java.time,現代Java日期和時間API,來處理你的時間戳作業。
LDAP 的時間戳格式有許多允許的變化(見底部的鏈接)。下面的格式化器考慮到了其中的許多變化,但并不是所有的變化。
private static final DateTimeFormatter LDAP_PARSER = new DateTimeFormatterBuilder ()
.appendPattern("uuuMMddHmmss"/span>)
.optionalStart()
.appendPattern("[。][,]")
.appendFraction(ChronoField.NANO_OF_SECOND, 1, 9, false)
.optionalEnd()
.appendPattern("[XX][X]"/span>)
.toFormatter(Locale.ROOT)。
通過這個格式,我們可以把你的字串決議成一個OffsetDateTime:
String ldapTimestampString = "20210908094049. 884Z"。
OffsetDateTime timestamp = OffsetDateTime.parse(ldapTimestampString, LDAP_PARSER)。
System.out.println(timestamp)。
輸出是:
2021-09-08T09:40:49.884Z
格式化
為了將時間戳轉換為包含日期和時間的字串,你需要決定一個時區,因為它在所有時區都不是相同的日期或相同的時間。使用這個格式:
private static final DateTimeFormatter FORMATTER
= DateTimeFormatter.ofPattern("dd.MM.yyy HH:mm") 。
然后做:
ZoneId zone = ZoneId.of("Pacific/ Tarawa")。
ZonedDateTime dateTime = timestamp.atZoneSameInstant(zone)。
String formattedDateTime = dateTime.format(FORMATTER)。
System.out.println(formattedDateTime)。
08.09.2021 21:40
鏈接
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/310915.html
標籤:
