package com.chamago.bison.util.xml; import java.io.PrintStream; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Hashtable; public final class TimeUtil { public static final SimpleDateFormat DateFormater = new SimpleDateFormat("yyyy-MM-dd"); public static final SimpleDateFormat TimeFormater = new SimpleDateFormat("HH:mm:ss"); public static final SimpleDateFormat DateTimeFormater = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); private static final Hashtable<String, SimpleDateFormat> CustomFormats = new Hashtable(); private static final String[] DaysOfWeek = { "日", "一", "二", "三", "四", "五", "六" }; private static final ThreadLocal<Long> threadTimes = new ThreadLocal(); public static String currentDate() { return DateFormater.format(new Date()); } public static String currentTime() { return TimeFormater.format(new Date()); } public static String currentDateTime() { return DateTimeFormater.format(new Date()); } public static String currentDateTime(String format) { try { synchronized (CustomFormats) { if (!CustomFormats.containsKey(format)) { CustomFormats.put(format, new SimpleDateFormat(format)); } } SimpleDateFormat formater = (SimpleDateFormat)CustomFormats.get(format); return formater.format(new Date()); } catch (Exception ex) { throw new RuntimeException("时间格式(" + format + ")错误", ex); } } public static String weekOfDay() { return weekOfDay(Calendar.getInstance()); } public static String weekOfDay(Calendar date) { return DaysOfWeek[(date.get(7) - 1)]; } public static String customDateTime(Date date) { return DateTimeFormater.format(date); } public static String customDateTime(Date time, String format) { try { synchronized (CustomFormats) { if (!CustomFormats.containsKey(format)) { CustomFormats.put(format, new SimpleDateFormat(format)); } } SimpleDateFormat formater = (SimpleDateFormat)CustomFormats.get(format); return formater.format(time); } catch (Exception ex) { throw new RuntimeException("日期时间格式(" + format + ")错误", ex); } } public static String customDateTime(Calendar time, String format) { try { synchronized (CustomFormats) { if (!CustomFormats.containsKey(format)) { CustomFormats.put(format, new SimpleDateFormat(format)); } } SimpleDateFormat formater = (SimpleDateFormat)CustomFormats.get(format); return formater.format(time); } catch (Exception ex) { throw new RuntimeException("日期时间格式(" + format + ")错误", ex); } } public static Date parserDateTime(String datetime) { try { return DateTimeFormater.parse(datetime); } catch (ParseException ex) { throw new RuntimeException("解析时间错误", ex); } } public static Date parserDateTime(String datetime, String format) { try { synchronized (CustomFormats) { if (!CustomFormats.containsKey(format)) { CustomFormats.put(format, new SimpleDateFormat(format)); } } SimpleDateFormat formater = (SimpleDateFormat)CustomFormats.get(format); return formater.parse(datetime); } catch (ParseException ex) { throw new RuntimeException("解析时间错误", ex); } } public static String convert(String time, String format) { return customDateTime(parserDateTime(time), format); } public static String convert(String time, String oformat, String nformat) { return customDateTime(parserDateTime(time, oformat), nformat); } public static long timeDiff(String time) { return parserDateTime(time).getTime() - new Date().getTime(); } public static long timeDiff(String time, String format) { return parserDateTime(time, format).getTime() - new Date().getTime(); } public static long timeDiff(String atime, String btime, String format) { return parserDateTime(atime, format).getTime() - parserDateTime(btime, format).getTime(); } public static long timeDiff(String atime, String aformat, String btime, String bformat) { return parserDateTime(atime, aformat).getTime() - parserDateTime(btime, bformat).getTime(); } static void beginTimer() { threadTimes.set(Long.valueOf(System.currentTimeMillis())); } public static long updateTimer() { Long current = (Long)threadTimes.get(); threadTimes.set(Long.valueOf(System.currentTimeMillis())); if (current == null) { return -1L; } return System.currentTimeMillis() - current.longValue(); } public static long fetchTimer() { return fetchTimer(true); } public static long fetchTimer(boolean remove) { Long current = (Long)threadTimes.get(); if (current != null) { if (remove) { threadTimes.remove(); } return System.currentTimeMillis() - current.longValue(); } return -1L; } public static void main(String[] args) { System.out.println(System.currentTimeMillis()); System.out.println(new Date().getTime()); } }