TimeUtil 完整原始碼
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class TimeUtil {
/**
* 長整型時間戳轉格式化字串
* @param time 毫秒時間戳字串,如 "1467342217645"
* @param pattern 日期格式,如 "yyyy-MM-dd HH:mm:ss.SSS"
* @return 格式化日期字串
*/
public static String parseLongTime2String(String time, String pattern) {
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(Long.valueOf(time));
return new SimpleDateFormat(pattern).format(cal.getTime());
}
/**
* 格式化日期字串轉長整型時間戳
* @param time 日期字串,如 "2016-07-01 10:52:41.792"
* @param pattern 日期格式
* @return 毫秒時間戳
*/
public static long parseString2LongTime(String time, String pattern) {
Date date = null;
try {
date = new SimpleDateFormat(pattern).parse(time);
} catch (ParseException e) {
e.printStackTrace();
}
return date.getTime();
}
public static void main(String[] args) {
Calendar cal = Calendar.getInstance();
System.out.println("當前時間戳:" + cal.getTimeInMillis());
System.out.println("時間戳轉字串:" + parseLongTime2String(String.valueOf(cal.getTimeInMillis()), "yyyy-MM-dd HH:mm:ss.SSS"));
System.out.println("字串轉時間戳:" + parseString2LongTime("2016-07-01 10:52:41.792", "yyyy-MM-dd HH:mm:ss.SSS"));
}
}
常用日期格式模式對照
| 模式字母 | 含義 | 範例 |
| yyyy | 年 | 2024 |
| MM | 月 | 07 |
| dd | 日 | 01 |
| HH | 時 (24小時制) | 14 |
| mm | 分 | 30 |
| ss | 秒 | 59 |
| SSS | 毫秒 | 123 |
使用建議
SimpleDateFormat 非線程安全,多線程環境請使用 ThreadLocal 或 JDK 8+ DateTimeFormatter。
- 生產環境建議統一使用 UTC 時間戳儲存,顯示時再按時區格式化。