[英]Android parsing String to Date time with SimpleDateFormat
我有字符串11/08/2013 08:48:10
我使用SimpleDateFormat("MM/dd/yyyy HH:mm:ss")
當我解析它時拋出異常:無法解析的日期
有什么問題嗎?
String result = han.ExecuteUrl("http://"+han.IP+":8015/api/Values/GetLastChange");
Log.d("Dal","result date time "+result); #result is 11/08/2013 08:48:10
SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
Date convertedDate = new Date();
try
{
convertedDate = dateFormat.parse(result);
}
catch (ParseException e)
{
e.printStackTrace();
}
它的工作嘗試像這樣解析你的日期..
String dtStart = "11/08/2013 08:48:10";
SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
try {
date = format.parse(dtStart);
System.out.println("Date ->" + date);
} catch (ParseException e) {
e.printStackTrace();
}
工作代碼在這里。
您可以使用以下代碼將字符串轉換為日期
String myStrDate = "11/08/2013 08:48:10";
SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
try {
Date date = format.parse(myStrDate);
System.out.println(date);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
對於反向,這意味着從日期轉換為字符串
SimpleDateFormat myFormat = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
try {
Date date = new Date();
String datetime = myFormat.format(date);
System.out.println("Current Date Time in give format: " + datetime);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
有關日期和時間格式的更多參考。 訪問開發者網站
這不是您要求的答案,而是其他讀者在 2020 年及以后想要的答案。
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/uuuu HH:mm:ss");
String result = "11/08/2013 08:48:10";
LocalDateTime dateTime = LocalDateTime.parse(result, formatter);
System.out.println("Parsed date and time: " + dateTime);
這個片段的輸出是:
解析日期和時間:2013-11-08T08:48:10
您使用的Date
類設計不佳且已過時,因此請不要再使用它。 相反,我使用的是 java.time,現代 Java 日期和時間 API。 如果您需要一個您現在無法升級的舊 API 的Date
,則轉換為:
Instant i = dateTime.atZone(ZoneId.systemDefault()).toInstant();
Date oldfashionedDate = DateTimeUtils.toDate(i);
System.out.println("Converted to old-fashioned Date: " + oldfashionedDate);
轉換為老式日期:Fri Nov 08 08:48:10 CET 2013
有什么問題嗎?
您的代碼唯一的錯誤是您使用了臭名昭著的SimpleDateFOrmat
和設計糟糕的Date
類。 你在 2013 年問這個問題的時候沒有錯。java.time 直到 4 個月后才出來。
您的代碼運行良好。 人們可能會推測字符串中的前導空格等阻止了解析。 如果這是問題所在,請嘗試解析result.trim()
而不僅僅是result
因為trim()
返回一個去除了前導和尾隨空格的字符串。
java.time 在較舊和較新的 Android 設備上都能很好地工作。 它只需要至少Java 6 。
Date
會更簡單一些: Date.from(i)
。org.threeten.bp
導入日期和時間類。java.time
。java.time
到 Java 6 和 7 的 backport(ThreeTen for JSR-310)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.