Java中使用SimpleDateFormat 進行日期格式化類 SimpleDateFormat 日期格式化類 示例 1 : 日期轉字元串 y 代表年 M 代表月 d 代表日 H 代表24進位的小時 h 代表12進位的小時 m 代表分鐘 s 代表秒 S 代表毫秒 package date; imp ...
Java中使用SimpleDateFormat 進行日期格式化類
SimpleDateFormat 日期格式化類
示例 1 : 日期轉字元串
y 代表年
M 代表月
d 代表日
H 代表24進位的小時
h 代表12進位的小時
m 代表分鐘
s 代表秒
S 代表毫秒
package date;
import java.text.SimpleDateFormat;
import java.util.Date;
public class TestDate {
public static void main(String[] args) {
//y 代表年
//M 代表月
//d 代表日
//H 代表24進位的小時
//h 代表12進位的小時
//m 代表分鐘
//s 代表秒
//S 代表毫秒
SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS" );
Date d= new Date();
String str = sdf.format(d);
System.out.println("當前時間通過 yyyy-MM-dd HH:mm:ss SSS 格式化後的輸出: "+str);
SimpleDateFormat sdf1 =new SimpleDateFormat("yyyy-MM-dd" );
Date d1= new Date();
String str1 = sdf1.format(d1);
System.out.println("當前時間通過 yyyy-MM-dd 格式化後的輸出: "+str1);
}
}
示例 2 : 字元串轉日期
模式(yyyy/MM/dd HH:mm:ss)需要和字元串格式保持一致,如果不一樣就會拋出解析異常ParseException
package date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class TestDate {
public static void main(String[] args) {
SimpleDateFormat sdf =new SimpleDateFormat("yyyy/MM/dd HH:mm:ss" );
String str = "2016/1/5 12:12:12";
try {
Date d = sdf.parse(str);
System.out.printf("字元串 %s 通過格式 yyyy/MM/dd HH:mm:ss %n轉換為日期對象: %s",str,d.toString());
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
練習: 日期格式化
準備一個長度是9的日期數組
使用1900年-2000年之間的隨機日期初始化該數組
按照這些日期的時間進行升序排序
比如 1988-1-21 12:33:22 就會排在 1978-4-21 19:07:23 前面,因為它的時間更小,雖然日期更大
答案:
package date;
import java.util.Date;
import java.util.Scanner;
import java.text.ParseException;
import java.text.SimpleDateFormat;
public class DateSort{
//隨機日期產生方法
public static Date getRandomDate(int start,int end){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
long timeStart=0;
long timeEnd=0;
try {
Date dateStart = sdf.parse(String.valueOf(start));
//System.out.println(dateStart);
Date dateEnd = sdf.parse(String.valueOf(end));
timeEnd = dateEnd.getTime()-1;
timeStart = dateStart.getTime();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
long randomTime = (long)(timeStart+(Math.random()*(timeEnd-timeStart)));
//System.out.println(randomTime);
return new Date(randomTime);
}
//格式化輸出日期字元串方法
public static String toString(Date d,String format){
SimpleDateFormat sdf = new SimpleDateFormat(format);
return sdf.format(d);
}
public static void main(String[] args) {
Date[] ds = new Date[9]; //創建隨機日期數組
// Scanner s = new Scanner(System.in);
// System.out.println("請輸入開始年份:");
// int startYear = s.nextInt();
// System.out.println("請輸入結束年份:");
// int endYear = s.nextInt();
for (int i = 0; i < ds.length; i++) { //初始化數組
ds[i] = getRandomDate(1900,2000);
}
System.out.println("排序前的隨機日期數組:");
for (int i = 0; i < ds.length; i++) {
System.out.print(toString(ds[i],"yyyy-MM-dd HH:mm:ss")+"\t");
if(i%3==2)
System.out.println();
}
for (int i = 0; i < ds.length; i++) {
for (int j = 0; j < ds.length-1-i; j++) {
String str1 = DateSort.toString(ds[j],"HHmmss");
String str2 = toString(ds[j+1],"HHmmss");
int j1 = Integer.parseInt(str1);
int j2 = Integer.parseInt(str2);
if (j1>j2) {
Date temp = ds[j];
ds[j]=ds[j+1];
ds[j+1]=temp;
}
}
}
System.out.println("排序後得到的日期數組:");
for (int i = 0; i < ds.length; i++) {
System.out.print(toString(ds[i],"yyyy-MM-dd HH:mm:ss")+"\t");
if(i%3==2)
System.out.println();
}
}
}