1. 程式人生 > >Java 中的 SimpleDateFormat 【 parse 和 format 】【轉換時間格式】

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 是差不多的道理。

其中在時間格式中的那個  Locale.US , 不要忘記了那個點,變成 US 是可以讓上下午變成 am 或者 pm 。