![](/img/trans.png)
[英]How to change date and time format from“yyyy-MM-dd HH:mm:ss” to “h:mm a”?
[英]Format date in yyyy-MM-dd hh:mm:ss format from whatever format
我有各種日期字符串,並想使用 java 以特定格式格式化
String arr[] = {"Jul 02,2020 ","15-10-2015 10:20:56","2015/10/26 12:10:39","27-04-2016 10:22:56","April 7, 2020"};
Arrays.asList(arr).forEach(date->{
try {
System.out.println(convertDate(date, "yyyy-MM-dd hh:mm:ss"));
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
});
public static String getDateString(String date,String patternStr) throws ParseException {
if(StringUtils.isNotEmpty(date)&& StringUtils.isNotEmpty(patternStr)) {
SimpleDateFormat pattern = new SimpleDateFormat(patternStr);
Date dateObject =new Date(date);
return pattern.format(dateObject).toString();
}
return date;
}
但是我正在解析某些日期值的異常。是否有任何通用方法來支持所有input date value
。
我建議您從過時且容易出錯的java.util
日期時間 API 切換到豐富的現代日期時間 API 集。 使用DateTimeFormatterBuilder
,您可以構建一個格式,包括所有預期的日期時間格式和默認為0
的小時、分鍾、秒。
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeFormatterBuilder;
import java.time.temporal.ChronoField;
public class Main {
public static void main(final String[] args) {
String arr[] = { "Jul 02,2020 ", "15-10-2015 10:20:56", "2015/10/26 12:10:39", "27-04-2016 10:22:56",
"April 7, 2020" };
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.appendPattern("[MMM d,yyyy]")
.appendPattern("[dd-MM-yyyy HH:mm:ss]")
.appendPattern("[yyyy/MM/dd HH:mm:ss]")
.appendPattern("[dd-MM-yyyy HH:mm:ss]")
.appendPattern("[MMMM d, yyyy]")
.parseDefaulting(ChronoField.HOUR_OF_DAY, 0)
.parseDefaulting(ChronoField.MINUTE_OF_HOUR, 0)
.parseDefaulting(ChronoField.SECOND_OF_MINUTE, 0)
.toFormatter();
for (String s : arr) {
LocalDateTime ldt = LocalDateTime.parse(s.trim(), formatter);
System.out.println("LocalDate#toString: " + ldt + ", " + "Formatted: "
+ ldt.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
}
}
}
Output:
LocalDate#toString: 2020-07-02T00:00, Formatted: 2020-07-02 00:00:00
LocalDate#toString: 2015-10-15T10:20:56, Formatted: 2015-10-15 10:20:56
LocalDate#toString: 2015-10-26T12:10:39, Formatted: 2015-10-26 12:10:39
LocalDate#toString: 2016-04-27T10:22:56, Formatted: 2016-04-27 10:22:56
LocalDate#toString: 2020-04-07T00:00, Formatted: 2020-04-07 00:00:00
你不可能那樣做。 對於每個日期字符串,您需要將模式連同它一起傳遞。 否則,您必須構建自己的字符串解析器,這可能既丑陋又麻煩。
首先,接受 String 的構造函數從 JDK 版本 1.1 開始被棄用,由 DateFormat.parse(String s) 取代。
檢查 文檔
從字符串中解析日期的正確方法是:
String sDate1="31/12/1998";
Date date1=new SimpleDateFormat("dd/MM/yyyy").parse(sDate1);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.