Java 中的 SimpleDateFormat 【 parse 和 format 】【轉換時間格式】
在 Java 裡面有很多特別方便的函式(儘管術語可能不這麼說)可以供我們使用,讓一些本來要寫好長好多的程式碼的事情變得僅僅幾行就解決了。
在 SimpleDateFormat 中,有以下特定的規則:
G 年代標誌符 y 年 M 月 d 日 h 時(在上午或者下午 12小時制) H 時(在一天中 24小時制)
m 分 s 秒 S 毫秒 E 星期 D 一年中的第幾天 z 時區 F 一月中第幾個星期幾 w 一年中第幾個星期
W 一月中第幾個星期 a 上午 / 下午標記符 k 時(在一天中的、24小時制) K 時(在上午或者下午、12小時制)
下面這題為例(SDUT 2246):
對於日期的常用格式,在中國常採用格式的是“年年年年/月月/日日”或寫為英語縮略表示的”yyyy/mm/dd”,此次程式設計競賽的啟動日期“2010/11/20”就是符合這種格式的一個日期,
而北美所用的日期格式則為“月月/日日/年年年年”或”mm/dd /yyyy”,如將“2010/11/20”改成這種格式,對應的則是”11/20/2010”。對於時間的格式,則常有12小時制和24小時制
的表示方法,24小時制用0-24來表示一天中的24小時,而12小時制只採用1-12表示小時,再加上am/pm來表示上午或下午,比如”17:30:00”是採用24小時制來表示時間,而對應的
12小時制的表示方法是”05:30:00pm”。注意12:00:00pm表示中午12點,而12:00:00am 表示凌晨12點。
對於給定的採用”yyyy/mm/dd”加24小時制(用短橫線”-”連線)來表示日期和時間的字串,請程式設計實現將其轉換成”mm/dd/yyyy”加12小時制格式的字串。
import java.util.*; import java.text.ParseException; import java.text.SimpleDateFormat; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n; n = sc.nextInt(); sc.nextLine(); SimpleDateFormat df1 = new SimpleDateFormat("yyyy/MM/dd-HH:mm:ss",Locale.CHINA); SimpleDateFormat df2 = new SimpleDateFormat("MM/dd/yyyy-hh:mm:ssa",Locale.US); String s; while(n -- > 0) { s = sc.nextLine(); try { System.out.println(df2.format(df1.parse(s)).toLowerCase()); }catch(ParseException e) { e.printStackTrace(); } } } }
其中需要知道的是,SimpleDateFormat 在 Java 裡面要匯入包 java.text.SimpleDateFormat 這樣才可以用。 語句中: SimpleDateFormat df1 = new SimpleDateFormat("yyyy/MM/dd-HH:mm:ss",Locale.CHINA); 以CHINA時間為準,定義格式為24小時制的時間格式,可以是這樣的形式:2018/11/27-17:12:12 ,同樣的道理第二個格式定義語句有同樣的功能,format 的作用就是轉換成這個格式,而 parse (從語法上描述或分析(詞句等))可以把字串轉換成相應的格式儲存,型別是 Date,這就像是一個字元型 '0' 和整數型 0 是差不多的道理。