Calendar.getInstance(TimeZone.getTimeZone("GMT+8:00")); 可以解决J2ME慢八小时的问题,它是根据时区来设置的! package com.iwidsets.util; import java.util.Calendar; import java.util.Date; import java.util.TimeZone; public class TimeUtil { private static Calendar calendar; private static StringBuffer timeBuffer; private static Date date; static { calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT+8:00")); date = new Date(); } private static void setTime(long time) { date.setTime(time); calendar.setTime(date); } /** * Put "0" to the beginning of time string if it is less than 10. */ public static String formatTimeInteger(int n) { if (n < 10) return "0" + n; else return String.valueOf(n); } /** * Put "0" to the beginning of time string if it is less than 1000. */ private static String formatYearInteger(int n) { if (n < 10) return "000" + n; else if (n < 100) return "00" + n; else if (n < 1000) return "0" + n; else return String.valueOf(n); } /** * Convert time to string. YYYY-MM-DD HH:MM:SS */ public static synchronized String toString(long time) { return toString(time, true, true); } public static synchronized String toString(long time, boolean hasDelimitors, boolean hasTime) { setTime(time); StringBuffer s = new StringBuffer(); s.append(formatYearInteger(calendar.get(Calendar.YEAR))).append( hasDelimitors ? "-" : ""); s.append(formatTimeInteger(calendar.get(Calendar.MONTH) + 1)).append( hasDelimitors ? "-" : ""); s.append(formatTimeInteger(calendar.get(Calendar.DAY_OF_MONTH))) .append(hasDelimitors && hasTime ? " " : ""); if (hasTime) { s.append(formatTimeInteger(calendar.get(Calendar.HOUR_OF_DAY))) .append(hasDelimitors ? ":" : ""); s.append(formatTimeInteger(calendar.get(Calendar.MINUTE))).append( hasDelimitors ? ":" : ""); s.append(formatTimeInteger(calendar.get(Calendar.SECOND))); } return s.toString(); } public static synchronized String getHM(long time) { setTime(time); timeBuffer = new StringBuffer(); timeBuffer .append(formatTimeInteger(calendar.get(Calendar.HOUR_OF_DAY))) .append(":"); timeBuffer.append(formatTimeInteger(calendar.get(Calendar.MINUTE))); return timeBuffer.toString(); } } 例子 public static String getHM() { SimpleDateFormat bartDateFormat = new SimpleDateFormat("HH:mm"); Date date = new Date(); return bartDateFormat.format(date); }