線程安全的LocalDateTime的各種轉換


1.將LocalDateTime轉為自定義的時間格式的字符串

public static String getDateTimeAsString(LocalDateTime localDateTime, String format) {

  DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format);

  return localDateTime.format(formatter);

}

 

 

2.將long類型的timestamp轉為LocalDateTime

public static LocalDateTime getDateTimeOfTimestamp(long timestamp) {

   Instant instant = Instant.ofEpochMilli(timestamp);

  ZoneId zone = ZoneId.systemDefault();

  return LocalDateTime.ofInstant(instant, zone);

}

 

3.將LocalDateTime轉為long類型的timestamp

  public static long getTimestampOfDateTime(LocalDateTime localDateTime) {

  ZoneId zone = ZoneId.systemDefault();

  Instant instant = localDateTime.atZone(zone).toInstant();

  return instant.toEpochMilli();

}

 

4.將某時間字符串轉為自定義時間格式的LocalDateTime

public static LocalDateTime parseStringToDateTime(String time, String format) {

  DateTimeFormatter df = DateTimeFormatter.ofPattern(format);

  return LocalDateTime.parse(time, df);

}

 

5.附一個獲取當日凌晨時間戳的方式

@Test
public void testSystem(){
Calendar c = Calendar.getInstance();
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
long timeInMillis = c.getTimeInMillis();
Instant instant = Instant.ofEpochMilli(timeInMillis);
ZoneId zone = ZoneId.systemDefault();
LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone);
DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String format = format.format( localDateTime);
System.out.println(format);
}

最后看懂這個代碼, 就提升了
long now = System.currentTimeMillis() / 1000l;

long daySecond = 60 * 60 * 24;

long dayTime = now - (now + 8 * 3600) % daySecond;

long nowTime =System.currentTimeMillis();
long todayStartTime =nowTime - ((nowTime + TimeZone.getDefault().getRawOffset()) % (24 * 60 * 60 * 1000L));




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM