簡體   English   中英

Android - 將日期格式更改為 dd/mm/yy

[英]Android - change Date Format to dd/mm/yy

Calendar calendar = Calendar.getInstance();
String currentDate = DateFormat.getDateInstance(DateFormat.SHORT).format(calendar.getTime());

我正在嘗試獲取當前日期,但格式為 DD/MM/YY,但它給了我 MM/DD/YY 關於如何修復它的任何建議?

您可以使用SimpleDateFormat class:

Calendar calendar = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yy");
String currentDate = sdf.format(calendar.getTime());

我假設您想反轉日期格式。

SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
Date date = fmt.parse(dateString);

SimpleDateFormat fmtOut = new SimpleDateFormat("dd-MM-yyyy");
return fmtOut.format(date);

希望會有所幫助。

tl;博士

現代方法使用java.time類。

LocalDate
.now
(
    ZoneId.of( "Africa/Casablanca" )
)
.format
(
    DateTimeFormatter.ofPattern( "dd/MM/uu" )
)

避免遺留的日期時間類

您正在使用幾年前被 JSR 310 中定義的現代java.time類取代的糟糕的日期時間類。

java.time

對於僅日期值,沒有時間和時區,請使用LocalDate

需要時區來確定當前日期。 對於任何特定時刻,日期在日本可能是“明天”,而在墨西哥仍可能是“昨天”。

ZoneId z = ZoneId.of( "America/Montreal" ) ;
LocalDate ld = LocalDate.now( z ) ;

生成帶有標准 ISO 8601 格式文本的字符串。

String output = ld.toString() ;

生成帶有自定義格式文本的字符串。

DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd/MM/uu" ) ;
String output = ld.format( f ) ;

關於java.time

java.time框架內置於 Java 8 及更高版本中。 這些類取代了麻煩的日期時間類,例如java.util.DateCalendarSimpleDateFormat

要了解更多信息,請參閱Oracle 教程 並在 Stack Overflow 上搜索許多示例和解釋。 規范是JSR 310

現在處於維護模式Joda-Time項目建議遷移到java.time類。

您可以直接與數據庫交換java.time對象。 使用符合JDBC 4.2或更高版本的JDBC 驅動程序 不需要字符串,不需要java.sql.*類。 Hibernate 5 & JPA 2.2 支持java.time

從哪里獲得 java.time 課程?

我正在嘗試獲取當前日期,但格式為 DD/MM/YY,...

不。 相信用戶最了解他或她的語言環境,並且 Java 中內置的語言環境數據最了解該語言環境的正確日期格式。 雖然 2020 年 4 月 24 日可能是您所在地區的一種很好的格式,但在其他地區的設備上,可能首選不同的格式。

使用 java.time,現代 Java 日期和時間 API:

    DateTimeFormatter dateFormatter
            = DateTimeFormatter.ofLocalizedDate(FormatStyle.SHORT);
    LocalDate d = LocalDate.now(ZoneId.systemDefault());
    System.out.println(d.format(dateFormatter));

順便說一句,在許多地區,包括意第緒語、加勒甘語、印度尼西亞語、烏茲別克語、塔吉克語、索馬里語、馬來語、意大利語和新西蘭英語,output 將是您所說的您想要的:

2020 年 4 月 24 日

我建議您使用 java.time 進行約會。 DateFormat是一個出了名的麻煩 class,而且Calendar的設計也很糟糕。 兩者都已經過時了。 而且 java.time 使用起來要好得多。

問:java.time不需要Android API 26級嗎?

java.time 適用於較舊和較新的 Android 設備。 它只需要至少Java 6

  • 在 Java 8 及更高版本以及更新的 Android 設備(來自 API 級別 26)中,現代 ZDB9734A 內置了23871083ACE16。
  • 在非 Android Java 6 和 7 中,獲得 ThreeTen Backport,現代類的后向端口(JSR 310 的 ThreeTen;參見底部的鏈接)。
  • 在(舊版)Android 上,使用 ThreeTen Backport 的 Android 版本。 它被稱為 ThreeTenABP。 並確保從帶有子包的org.threeten.bp導入日期和時間類。

鏈接

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM