首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Java 字串轉 Date:將「yyyy-MM-dd HH:mm:ss」解析為「yyyy-MM-dd」日期物件

     編輯:程式設計綜合問答

需求

輸入字串 "2013-06-06 00:00:00",解析為只保留日期部分的 java.util.Date(或 java.sql.Date)。

標準做法

String input = "2013-06-06 00:00:00";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
    Date fullDate = sdf.parse(input); // 完整日期時間
    // 若需只保留日期部分,可再格式化再解析
    SimpleDateFormat dateOnly = new SimpleDateFormat("yyyy-MM-dd");
    String dateStr = dateOnly.format(fullDate);
    Date date = dateOnly.parse(dateStr); // 時分秒歸零的 Date
    System.out.println(date); // Thu Jun 06 00:00:00 CST 2013
} catch (ParseException e) {
    e.printStackTrace();
}

進階:Java 8+ 使用 java.time(推薦)

LocalDateTime ldt = LocalDateTime.parse("2013-06-06T00:00:00", DateTimeFormatter.ISO_LOCAL_DATE_TIME);
LocalDate date = ldt.toLocalDate(); // 直接取日期部分
// 若需 java.util.Date
Date utilDate = Date.from(date.atStartOfDay(ZoneId.systemDefault()).toInstant());

常見錯誤

  • 格式模式大小寫錯誤:mm 是分鐘,MM 才是月份;hh 12小時制,HH 24小時制。
  • Locale 未指定,導致月份名稱解析失敗(如 Jun vs 六月)。
  • 執行緒不安全:SimpleDateFormat 非執行緒安全,多執行緒環境請使用 ThreadLocal 或 Java 8 DateTimeFormatter。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved