package com.mm.android.deviceaddmodule.mobilecommon.utils; import android.content.Context; import android.text.TextUtils; import com.company.NetSDK.NET_TIME; import com.mm.android.deviceaddmodule.R; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Locale; import java.util.TimeZone; public class TimeUtils { /** * 一天的总时间 */ public static final int TOTAL_SECONDS = 24 * 3600; public static final String LONG_FORMAT = "yyyy-MM-dd HH:mm:ss"; public static final String BLE_MESSAGE_FORMAT = "yyyyå¹´MM月dd天HH:mm:ss"; public static final String SMB_REQUEST_FORMAT = "yyyyMMdd'T'HHmmss"; public static final String REQUEST_FORMAT = "yyyyMMddHHmmss"; public static final String REQUEST_DATE_FORMAT = "yyyyMMdd"; public static final String COMMON_TIME_FORMAT = "%04d%02d%02d%02d%02d%02d"; public static final String DH_TIME_FORMAT = "%04d%02d%02dT%02d%02d%02d"; public static final String SHORT_FORMAT = "HH:mm:ss"; public static final String SHORT_FORMAT2 = "HHmmss"; public static final String SIMPLE_FORMAT = "HH:mm"; public static String displayTime(Context context,long inputTime, String todayFormatStr, String yesterdayFormatStr, String otherFormatStr) { // æ—¥æœŸæ ¼å¼åŒ– SimpleDateFormat todayFormat = todayFormatStr != null ? TimeUtils.getDateFormatWithUS(todayFormatStr) : null; SimpleDateFormat yesterdayFormat = yesterdayFormatStr != null ? TimeUtils.getDateFormatWithUS(yesterdayFormatStr) : null; SimpleDateFormat otherFormat = otherFormatStr != null ? TimeUtils.getDateFormatWithUS(otherFormatStr) : null; String timeStr = null; // 获å–当å‰å‡Œæ™¨æ—¶é—´ Calendar c = Calendar.getInstance(); String getYear = String.valueOf(c.get(Calendar.YEAR)); String getMonth = String.valueOf(c.get(Calendar.MONTH) + 1); String getDayOfMonth = String.valueOf(c.get(Calendar.DAY_OF_MONTH)); if (getMonth.length() == 1) { getMonth = "0" + getMonth; } if (getDayOfMonth.length() == 1) { getDayOfMonth = "0" + getDayOfMonth; } String currentStartTimeStr = getYear + "-" + getMonth + "-" + getDayOfMonth + " 00:00:00"; // 当å‰å‡Œæ™¨æ—¶é—´æ ¼å¼è½¬æ¢ java.sql.Timestamp currentStartTime = java.sql.Timestamp.valueOf(currentStartTimeStr); long currentStart = currentStartTime.getTime(); // 与当å‰å‡Œæ™¨æ—¶é—´ç›¸å·®ç§’æ•° long timeGap = (currentStart - inputTime) / 1000; // 输入时间:年 if (timeGap <= 0) { timeStr = todayFormat != null ? todayFormat.format(inputTime) :context.getResources().getString(R.string.common_today); // ä»Šå¤©æ ¼å¼ï¼š10:00 } else if (timeGap > 0 && timeGap <= 24 * 60 * 60) { timeStr = yesterdayFormat != null ? yesterdayFormat.format(inputTime) :context.getResources().getString(R.string.common_yesterday); // æ˜¨å¤©æ ¼å¼ï¼šæ˜¨å¤© } else { timeStr = otherFormat != null ? otherFormat.format(inputTime) : String.valueOf(inputTime); // å…¶ä»–æ ¼å¼ï¼š15/09/03 } return timeStr; } public static NET_TIME Date2NetTime(Date date) { NET_TIME time = new NET_TIME(); time.dwYear = date.getYear() + 1900; time.dwMonth = date.getMonth() + 1; time.dwDay = date.getDate(); time.dwHour = date.getHours(); time.dwMinute = date.getMinutes(); time.dwSecond = date.getSeconds(); return time; } public static Date NetTimeToData(NET_TIME netTime) { Date date = new Date((int)netTime.dwYear - 1900, (int)netTime.dwMonth - 1, (int)netTime.dwDay, (int)netTime.dwHour, (int)netTime.dwMinute, (int)netTime.dwSecond); return date; } /** * 比较两个NET_TIMEçš„å¤§å° * @param time1 * @param time2 * @return an int < 0 if time1 is less than time2, 0 if they are equal, and an int > 0 if time1 is greater. */ public static int compareNetTime(NET_TIME time1, NET_TIME time2) { Date date1 = new Date((int)time1.dwYear - 1900, (int)time1.dwMonth - 1, (int)time1.dwDay, (int)time1.dwHour, (int)time1.dwMinute, (int)time1.dwSecond); Date date2 = new Date((int)time2.dwYear - 1900, (int)time2.dwMonth - 1, (int)time2.dwDay, (int)time2.dwHour, (int)time2.dwMinute, (int)time2.dwSecond); return date1.compareTo(date2); } public static boolean isToday(Calendar calendar) { if(calendar == null){ return false; } Calendar now = Calendar.getInstance(); boolean isToday = now.get(Calendar.YEAR) == calendar .get(Calendar.YEAR) && (now.get(Calendar.MONTH) + 1) == (calendar .get(Calendar.MONTH) + 1) && now.get(Calendar.DATE) == calendar.get(Calendar.DATE) ; return isToday; } public static boolean isTodayOrBefore(Calendar calendar) { if(calendar == null){ return false; } Calendar now = Calendar.getInstance(); boolean isTodayOrBefore = now.get(Calendar.YEAR) == calendar .get(Calendar.YEAR) && (now.get(Calendar.MONTH) + 1) == (calendar .get(Calendar.MONTH) + 1) && now.get(Calendar.DATE) == calendar.get(Calendar.DATE) || calendar.before(now); return isTodayOrBefore; } public static boolean isBeforeToday(Calendar calendar) { if(calendar == null){ return false; } Calendar now = Calendar.getInstance(); boolean isTodayOrAfter = now.get(Calendar.YEAR) == calendar.get(Calendar.YEAR) && (now.get(Calendar.MONTH) + 1) == (calendar.get(Calendar.MONTH) + 1) && now.get(Calendar.DATE) == calendar.get(Calendar.DATE) || !calendar.before(now); return !isTodayOrAfter; } public static boolean isCurrentMonthOrBefore(Calendar calendar) { if(calendar == null){ return false; } Calendar now = Calendar.getInstance(); boolean isCurrentMonthOrBefore = now.get(Calendar.YEAR) == calendar .get(Calendar.YEAR) && (now.get(Calendar.MONTH) + 1) == (calendar .get(Calendar.MONTH) + 1) || !calendar.before(now); return !isCurrentMonthOrBefore; } /** * String2Date * <p> * </p> * * @param dateStr * @param format * @return */ public static Date stringToDate(String dateStr, String format) { SimpleDateFormat formatter = TimeUtils.getDateFormatWithUS(format); Date strtodate = null; try { strtodate = formatter.parse(dateStr); } catch (ParseException e) { e.printStackTrace(); return new Date(); } return strtodate; } /** * æœåС噍0时区å—ç¬¦ä¸²è½¬æ¢æ‰æœ¬åœ°æ—¶é—´ * @param dateStr * @param format * @return */ public static long getLocalTimeByString(String dateStr, String format){ if(TextUtils.isEmpty(dateStr)){ return 0; } long time = TimeUtils.stringToDate(dateStr, format).getTime(); return time = time + getTimeZone() * 1000; //åŠ åç§»é‡ } /** * long转String * <p> * </p> * @param milliseconds * the number of milliseconds since Jan. 1, 1970 GMT. * @param formatStr * è¦è½¬åŒ–æˆçš„æ—¶é—´æ ¼å¼ * @return */ public static String long2String(long milliseconds, String formatStr) { Date date = new Date(milliseconds); SimpleDateFormat format = TimeUtils.getDateFormatWithUS(formatStr); return format.format(date); } /** * string2String * <p> * </p> * @param dateStr * 被转æ¢çš„æ—¶é—´å—符串 * @param formatFrom * 转化å‰çš„æ—¶é—´æ ¼å¼ * @param formatTo * 转化åŽçš„æ—¶é—´æ ¼å¼ * @return */ public static String string2String(String dateStr, String formatFrom, String formatTo) { SimpleDateFormat formatF = TimeUtils.getDateFormatWithUS(formatFrom); try { Date date = formatF.parse(dateStr); SimpleDateFormat formatT = TimeUtils.getDateFormatWithUS(formatTo); return formatT.format(date); } catch (ParseException e1) { e1.printStackTrace(); return dateStr; } } public static String string2StringForReport(String dateStr, String formatFrom, String formatTo) { SimpleDateFormat formatF = TimeUtils.getDateFormatWithUS(formatFrom); try { Date date = formatF.parse(dateStr); SimpleDateFormat formatT = TimeUtils.getDateFormatWithUS(formatTo); return formatT.format(date); } catch (ParseException e1) { e1.printStackTrace(); return "--"; } } /** * date2Str * <p> * </p> * @param d * 被转化的Date * @param format * è½¬åŒ–æ ¼å¼ * @return */ public static String date2String(Date d, String format) { if(d == null) { return ""; } SimpleDateFormat formatter = TimeUtils.getDateFormatWithUS(format); return formatter.format(d); } public static Date string2hhmm(String strDate) { Date mDate = stringToDate2(strDate, LONG_FORMAT); if (mDate == null) { mDate = stringToDate2(strDate, SHORT_FORMAT); } if (mDate == null) { mDate = stringToDate2(strDate, SIMPLE_FORMAT); } return mDate; } private static Date stringToDate2(String dateStr, String format) { SimpleDateFormat formatter = TimeUtils.getDateFormatWithUS(format); Date strtodate = null; try { strtodate = formatter.parse(dateStr); } catch (ParseException e) { e.printStackTrace(); } return strtodate; } public static String getNewRequestTime(long time){ Date d = new Date(time); return date2String(d,REQUEST_DATE_FORMAT)+"T"+date2String(d,SHORT_FORMAT2); } public static long getResponseTime(String dateString){ if(dateString==null) return 0; if(dateString.contains("T")){ dateString = dateString.replace("T" ,""); } Date date = stringToDate(dateString,REQUEST_FORMAT); if (date == null) return 0; return date.getTime(); } /** * èŽ·å–æ—¶é—´æˆ³ * @param dateString 0时区的时间 * @return */ public static long getResponseStamp(String dateString){ if(dateString==null) return 0; if(dateString.contains("T")){ dateString = dateString.replace("T" ,""); } SimpleDateFormat formatter = TimeUtils.getDateFormatWithUS(REQUEST_FORMAT); formatter.setTimeZone(TimeZone.getTimeZone("UTC")); Date strtodate = null; try { strtodate = formatter.parse(dateString); } catch (ParseException e) { e.printStackTrace(); } if (strtodate == null) return 0; return strtodate.getTime(); } public static String setOnceTime(String time) { Date d = string2hhmm(time); Date now = new Date(); if (d!=null && d.before(now)) { // åŠ ä¸€å¤© long tomorro = d.getTime() + 24 * 60 * 60 * 1000; Date tomorr = new Date(tomorro); return date2String(tomorr, LONG_FORMAT); } return date2String(d, LONG_FORMAT); } /** * æ ¼å¼åŒ–显示时间 * * @param inputTime * 毫秒 * @param inputTime 输入时间(UNIX时间戳毫秒) * @return */ public static String displayTime(long inputTime, String todayFormatStr, String yesterdayFormatStr, String otherFormatStr) { // æ—¥æœŸæ ¼å¼åŒ– SimpleDateFormat todayFormat = todayFormatStr != null ? TimeUtils.getDateFormatWithUS(todayFormatStr) : null; SimpleDateFormat yesterdayFormat = yesterdayFormatStr != null ? TimeUtils.getDateFormatWithUS(yesterdayFormatStr) : null; SimpleDateFormat otherFormat = otherFormatStr != null ? TimeUtils.getDateFormatWithUS(otherFormatStr) : null; String timeStr = null; // 获å–当å‰å‡Œæ™¨æ—¶é—´ Calendar c = Calendar.getInstance(); String getYear = String.valueOf(c.get(Calendar.YEAR)); String getMonth = String.valueOf(c.get(Calendar.MONTH) + 1); String getDayOfMonth = String.valueOf(c.get(Calendar.DAY_OF_MONTH)); if (getMonth.length() == 1) { getMonth = "0" + getMonth; } if (getDayOfMonth.length() == 1) { getDayOfMonth = "0" + getDayOfMonth; } String currentStartTimeStr = getYear + "-" + getMonth + "-" + getDayOfMonth + " 00:00:00"; // 当å‰å‡Œæ™¨æ—¶é—´æ ¼å¼è½¬æ¢ java.sql.Timestamp currentStartTime = java.sql.Timestamp.valueOf(currentStartTimeStr); long currentStart = currentStartTime.getTime(); // 与当å‰å‡Œæ™¨æ—¶é—´ç›¸å·®ç§’æ•° long timeGap = (currentStart - inputTime) / 1000; // 输入时间:年 if (timeGap <= 0) { timeStr = todayFormat != null ? todayFormat.format(inputTime) : "今天 "; // ä»Šå¤©æ ¼å¼ï¼š10:00 } else if (timeGap > 0 && timeGap <= 24 * 60 * 60) { timeStr = yesterdayFormat != null ? yesterdayFormat.format(inputTime) : "昨天 "; // æ˜¨å¤©æ ¼å¼ï¼šæ˜¨å¤© } else { timeStr = otherFormat != null ? otherFormat.format(inputTime) : String.valueOf(inputTime); // å…¶ä»–æ ¼å¼ï¼š15/09/03 } return timeStr; } /** * æˆ‘çš„æ–‡ä»¶ã€æŠ¥è¦æ¶ˆæ¯åˆ—表悬åœå¤´çš„æ–‡æ¡ˆ 今天 ã€æ˜¨å¤©ã€ 05/07ã€15/12/19 * * @param strTimestamp * è¾“å…¥æ—¶é—´ï¼ˆæ ¼å¼ï¼š"yyyy-MM-dd HH:mm:ss") * @return */ public static String getStickxinzaieader(String strTimestamp) { // æ—¥æœŸæ ¼å¼åŒ– SimpleDateFormat xinzai = TimeUtils.getDateFormatWithUS("yy/MM/dd"); SimpleDateFormat mh = TimeUtils.getDateFormatWithUS("MM/dd"); SimpleDateFormat y = TimeUtils.getDateFormatWithUS("yyyy"); String timeStr = null; // 获å–当å‰å‡Œæ™¨æ—¶é—´ Calendar c = Calendar.getInstance(); String getYear = String.valueOf(c.get(Calendar.YEAR)); String getMonth = String.valueOf(c.get(Calendar.MONTH) + 1); String getDayOfMonth = String.valueOf(c.get(Calendar.DAY_OF_MONTH)); if (getMonth.length() == 1) { getMonth = "0" + getMonth; } if (getDayOfMonth.length() == 1) { getDayOfMonth = "0" + getDayOfMonth; } String currentStartTimeStr = getYear + "-" + getMonth + "-" + getDayOfMonth + " 00:00:00"; // 当å‰å‡Œæ™¨æ—¶é—´æ ¼å¼è½¬æ¢ java.sql.Timestamp currentStartTime = java.sql.Timestamp.valueOf(currentStartTimeStr); long currentStart = currentStartTime.getTime(); // è¾“å…¥æ—¶é—´æ ¼å¼è½¬æ¢ java.sql.Timestamp time = java.sql.Timestamp.valueOf(strTimestamp); long timestamp = time.getTime(); // 与当å‰å‡Œæ™¨æ—¶é—´ç›¸å·®ç§’æ•° long timeGap = (currentStart - timestamp) / 1000; // 输入时间:年 String year = y.format(timestamp); if (timeGap <= 0) { timeStr = "今天 "; // æ ¼å¼ï¼šä»Šå¤© } else if (timeGap > 0 && timeGap <= 24 * 60 * 60) { timeStr = "昨天 "; // æ ¼å¼ï¼šæ˜¨å¤© } else if (year.equals(String.valueOf(getYear))) { timeStr = mh.format(timestamp); // (年内)MM月ddæ—¥ } else { timeStr = xinzai.format(timestamp); // (年å‰ï¼‰æ ¼å¼ï¼šyyyyå¹´MM月ddæ—¥ } return timeStr; } /** * æˆ‘çš„æ–‡ä»¶ã€æŠ¥è¦æ¶ˆæ¯åˆ—表悬åœå¤´çš„æ–‡æ¡ˆ 今天 ã€æ˜¨å¤©ã€ 05/07ã€15/12/19 * * @param timestamp 输入时间UNIX时间戳毫秒 * @return */ public static String getStickxinzaieader(long timestamp) { // æ—¥æœŸæ ¼å¼åŒ– SimpleDateFormat xinzai = TimeUtils.getDateFormatWithUS("yy/MM/dd"); SimpleDateFormat mh = TimeUtils.getDateFormatWithUS("MM/dd"); SimpleDateFormat y = TimeUtils.getDateFormatWithUS("yyyy"); String timeStr = null; // 获å–当å‰å‡Œæ™¨æ—¶é—´ Calendar c = Calendar.getInstance(); String getYear = String.valueOf(c.get(Calendar.YEAR)); String getMonth = String.valueOf(c.get(Calendar.MONTH) + 1); String getDayOfMonth = String.valueOf(c.get(Calendar.DAY_OF_MONTH)); if (getMonth.length() == 1) { getMonth = "0" + getMonth; } if (getDayOfMonth.length() == 1) { getDayOfMonth = "0" + getDayOfMonth; } String currentStartTimeStr = getYear + "-" + getMonth + "-" + getDayOfMonth + " 00:00:00"; // 当å‰å‡Œæ™¨æ—¶é—´æ ¼å¼è½¬æ¢ java.sql.Timestamp currentStartTime = java.sql.Timestamp.valueOf(currentStartTimeStr); long currentStart = currentStartTime.getTime(); // 与当å‰å‡Œæ™¨æ—¶é—´ç›¸å·®ç§’æ•° long timeGap = (currentStart - timestamp) / 1000; // 输入时间:年 String year = y.format(timestamp); if (timeGap <= 0) { timeStr = "今天 "; // æ ¼å¼ï¼šä»Šå¤© } else if (timeGap > 0 && timeGap <= 24 * 60 * 60) { timeStr = "昨天 "; // æ ¼å¼ï¼šæ˜¨å¤© } else if (year.equals(String.valueOf(getYear))) { timeStr = mh.format(timestamp); // (年内)MM月ddæ—¥ } else { timeStr = xinzai.format(timestamp); // (年å‰ï¼‰æ ¼å¼ï¼šyyyyå¹´MM月ddæ—¥ } return timeStr; } /** * 获å–当å‰å¹´çš„第一天 * <p> * </p> * * @return */ public static Date getCurrentYearFirst() { Calendar calendar = Calendar.getInstance(); int year = calendar.get(Calendar.YEAR); return getYearFirst(year); } /** * èŽ·å–æŸä¸€å¹´çš„第一天 * <p> * </p> * @param year * @return */ public static Date getYearFirst(int year) { Calendar calendar = Calendar.getInstance(); calendar.clear(); calendar.set(Calendar.YEAR, year); Date firstDay = calendar.getTime(); return firstDay; } /** * 获å–当å‰å¹´çš„æœ€åŽä¸€å¤© * <p> * </p> * @return */ public static Date getCurrentYearLast() { Calendar calendar = Calendar.getInstance(); int year = calendar.get(Calendar.YEAR); return getYearLast(year); } /** * èŽ·å–æŸä¸€å¹´çš„æœ€åŽä¸€å¤© * <p> * </p> * @param year * @return */ public static Date getYearLast(int year) { Calendar calendar = Calendar.getInstance(); calendar.clear(); calendar.set(Calendar.YEAR, year); calendar.roll(Calendar.DAY_OF_YEAR, -1); Date lastDay = calendar.getTime(); return lastDay; } /** * 在输入Dateçš„åŸºç¡€ä¸ŠåŠ /凿Ÿæ®µæ—¶é—´ï¼Œè¿”回一个新的Date * <p> * </p> * @param date * @param field * @param value * @return */ public static Date add(Date date, int field, int value) { Calendar calendar = Calendar.getInstance(); calendar.clear(); calendar.setTime(date); calendar.add(field, value); return calendar.getTime(); } /** * ç›´æ’åˆ†äº«æ—¶é—´æ ¼å¼ */ public static String getTime(long time) { time = time +System.currentTimeMillis(); Date date = new Date(time); SimpleDateFormat format = TimeUtils.getDateFormatWithUS("MM月ddæ—¥ HH:mm"); return format.format(date); } public static String getTimeSec() { Date date = new Date(System.currentTimeMillis()); SimpleDateFormat format = TimeUtils.getDateFormatWithUS("yyyy-MM-dd HH:mm:ss"); return format.format(date); } /*用户èžåˆæ·»åŠ */ /*èŽ·å–æ‰‹æœºæ—¶åŒº----UTCæ ¼å¼*/ public static int getTimeZone(){ Calendar cal = Calendar.getInstance(Locale.getDefault()); int zoneOffset = cal.get(Calendar.ZONE_OFFSET); int zone = zoneOffset/1000; return zone; } /*èŽ·å–æ—¶é—´å—符串:从yyyyMMddTHHmmssZæ—¶é—´æ ¼å¼åˆ°yyyy-MM-dd HH:mm*/ public static String getTimeFromUTC(String timeStr) { if(TextUtils.isEmpty(timeStr)) { return ""; } Date timeDate = TimeUtils.stringToDate(timeStr, "yyyyMMdd'T'HHmmss'Z'"); if(timeDate == null) { return ""; } long time = timeDate.getTime(); // time = time + getTimeZone() * 1000; //åŠ åç§»é‡ Date date = new Date(time); SimpleDateFormat sdf = TimeUtils.getDateFormatWithUS("yyyy-MM-dd HH:mm"); return sdf.format(date); } /** * æˆ‘çš„æ–‡ä»¶ã€æŠ¥è¦æ¶ˆæ¯åˆ—表悬åœå¤´çš„æ–‡æ¡ˆ 今天 ã€æ˜¨å¤©ã€ 05/07ã€15/12/19 * * @param context 上下文 * @param timestamp 输入时间UNIX时间戳毫秒 * @return */ public static String getStickxinzaieader(Context context,long timestamp) { // æ—¥æœŸæ ¼å¼åŒ– SimpleDateFormat xinzai = TimeUtils.getDateFormatWithUS("yy/MM/dd"); SimpleDateFormat mh = TimeUtils.getDateFormatWithUS("MM/dd"); SimpleDateFormat y = TimeUtils.getDateFormatWithUS("yyyy"); String timeStr = null; // 获å–当å‰å‡Œæ™¨æ—¶é—´ Calendar c = Calendar.getInstance(); String getYear = String.valueOf(c.get(Calendar.YEAR)); String getMonth = String.valueOf(c.get(Calendar.MONTH) + 1); String getDayOfMonth = String.valueOf(c.get(Calendar.DAY_OF_MONTH)); if (getMonth.length() == 1) { getMonth = "0" + getMonth; } if (getDayOfMonth.length() == 1) { getDayOfMonth = "0" + getDayOfMonth; } String currentStartTimeStr = getYear + "-" + getMonth + "-" + getDayOfMonth + " 00:00:00"; // 当å‰å‡Œæ™¨æ—¶é—´æ ¼å¼è½¬æ¢ java.sql.Timestamp currentStartTime = java.sql.Timestamp.valueOf(currentStartTimeStr); long currentStart = currentStartTime.getTime(); // 与当å‰å‡Œæ™¨æ—¶é—´ç›¸å·®ç§’æ•° long timeGap = (currentStart - timestamp) / 1000; // 输入时间:年 String year = y.format(timestamp); if (timeGap <= 0) { timeStr = context.getResources().getString(R.string.common_today); // æ ¼å¼ï¼šä»Šå¤© } else if (timeGap > 0 && timeGap <= 24 * 60 * 60) { timeStr = context.getResources().getString(R.string.common_yesterday); // æ ¼å¼ï¼šæ˜¨å¤© } else if (year.equals(String.valueOf(getYear))) { timeStr = mh.format(timestamp); // (年内)MM月ddæ—¥ } else { timeStr = xinzai.format(timestamp); // (年å‰ï¼‰æ ¼å¼ï¼šyyyyå¹´MM月ddæ—¥ } return timeStr; } //获å–当剿—¶åŒºä¸Ž0时区差值 public static int getTimeOffset(){ Calendar calendar=Calendar.getInstance(TimeZone.getDefault()); int offset=calendar.get(Calendar.ZONE_OFFSET); return offset/1000; } /** * * @param time 带时区的时间戳(时间å•ä½ä¸ºmS) * @return */ public static long change2UTC(long time) { SimpleDateFormat format = TimeUtils.getDateFormatWithUS("yyyy-MM-dd HH:mm:ss"); format.setTimeZone(TimeZone.getTimeZone("UTC")); String timeStr=format.format(new Date(time)); Date date = string2hhmm(timeStr); return date != null ? date.getTime() : 0; } /** * * @param time UTC时间戳(时间å•ä½ä¸ºmS) * @return */ public static long change2Local(long time){ SimpleDateFormat format = TimeUtils.getDateFormatWithUS("yyyy-MM-dd HH:mm:ss"); format.setTimeZone(TimeZone.getDefault()); String timeStr=format.format(new Date(time + getTimeOffset() * 1000)); Date date = string2hhmm(timeStr); return date != null ? date.getTime() : 0; } /** *å°†æœåŠ¡è¿”å›žçš„æ—¶é—´å—ä¸²æ ¼å¼è½¬æ¢ä¸ºyyyy-MM-dd HH:mm:ssæ ¼å¼ * @param time æœåŠ¡è¿”å›žè®¾å¤‡æ—¶é—´ * @return */ public static String changeTimeFormat2Standard(String time){ SimpleDateFormat format = TimeUtils.getDateFormatWithUS("yyyyMMdd'T'HHmmss"); Date date=null; try { date=format.parse(time); } catch (ParseException e) { e.printStackTrace(); } SimpleDateFormat standardFormat = TimeUtils.getDateFormatWithUS("yyyy-MM-dd HH:mm:ss"); String standardTimeStr=date==null?"":standardFormat.format(date); return standardTimeStr; } /** *å°†æœåŠ¡è¿”å›žçš„æ—¶é—´å—ä¸²æ ¼å¼è½¬æ¢ä¸ºMM-dd HH:mmæ ¼å¼ * @param time æœåŠ¡è¿”å›žè®¾å¤‡æ—¶é—´ * @return */ public static String changeTimeFormat2StandardNoYear(String time){ SimpleDateFormat format = TimeUtils.getDateFormatWithUS("yyyyMMdd'T'HHmmss"); Date date=null; try { date=format.parse(time); } catch (ParseException e) { e.printStackTrace(); } SimpleDateFormat standardFormat = TimeUtils.getDateFormatWithUS("MM-dd HH:mm:ss"); String standardTimeStr=date==null?"":standardFormat.format(date); return standardTimeStr; } /** *å°†æœåŠ¡è¿”å›žçš„æ—¶é—´å—ä¸²æ ¼å¼è½¬æ¢ä¸ºyyyy-MM-dd HH:mmæ ¼å¼ * @param time æœåŠ¡è¿”å›žè®¾å¤‡æ—¶é—´ * @return */ public static String changeTimeFormat2StandardMin(String time){ SimpleDateFormat format = TimeUtils.getDateFormatWithUS("yyyyMMdd'T'HHmmss"); Date date=null; try { date=format.parse(time); } catch (ParseException e) { e.printStackTrace(); } SimpleDateFormat standardFormat = TimeUtils.getDateFormatWithUS("yyyy-MM-dd HH:mm"); String standardTimeStr=date==null?"":standardFormat.format(date); return standardTimeStr; } /** *å°†æœåŠ¡è¿”å›žçš„æ—¶é—´å—ä¸²æ ¼å¼è½¬æ¢ä¸ºé•¿æ•´åž‹ * @param time æœåŠ¡è¿”å›žè®¾å¤‡æ—¶é—´ * @return */ public static long changeTimeStrToStamp(String time){ SimpleDateFormat format = TimeUtils.getDateFormatWithUS("yyyyMMdd'T'HHmmss"); Date date=null; try { date=format.parse(time); } catch (ParseException e) { e.printStackTrace(); } long timeStamp=date==null?0:date.getTime(); return timeStamp; } /** *å°†æœåŠ¡è¿”å›žçš„æ—¶é—´å—ä¸²æ ¼å¼è½¬æ¢ä¸ºoutTimeformatæ ¼å¼ * @param time æœåŠ¡è¿”å›žè®¾å¤‡æ—¶é—´ * @param outTimeformat è‡ªå®šä¹‰æ—¶é—´æ ¼å¼ , 0æ—¶åŒºæ—¶é—´è½¬æ¢ * @return */ public static String changeTimeFormat2StandardMinByDateFormat(String time,String outTimeformat){ SimpleDateFormat format = TimeUtils.getDateFormatWithUS("yyyyMMdd'T'HHmmss'Z'"); Date date=null; try { date=format.parse(time); } catch (ParseException e) { e.printStackTrace(); }catch (NullPointerException e){ e.printStackTrace(); } SimpleDateFormat standardFormat = TimeUtils.getDateFormatWithUS(outTimeformat); if(date == null)return ""; date.setTime(date.getTime()+ TimeUtils.getTimeZone() * 1000);//åŠ åç§»é‡ String standardTimeStr= standardFormat.format(date); return standardTimeStr; } //返回 0时区 毫秒值 public static long changeTime2UTCStamp(String time, String dateFormat) { SimpleDateFormat format = TimeUtils.getDateFormatWithUS(dateFormat); format.setTimeZone(TimeZone.getTimeZone("UTC")); Date date = null; try { date = format.parse(time); } catch (ParseException e) { e.printStackTrace(); } return date == null ? 0 : date.getTime(); } /** * ä¸å¸¦å¹´ä»½çš„æ—¶é—´è½¬æ—¶é—´æˆ³ * @param time * @return */ public static long changeDateToUnix(String time) { SimpleDateFormat sdf = TimeUtils.getDateFormatWithUS("MM-dd HH:mm"); Date date = new Date(); try { date = sdf.parse(time); } catch (ParseException e) { e.printStackTrace(); } return date.getTime(); } /** * 转æˆå¤§åŽæ ‡å‡†æ—¶é—´ yyyyMMddTHHmmss * @return */ public static String changeTimeFormat(String timeFormat) { try { Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(System.currentTimeMillis()); return String.format(timeFormat, calendar.get(Calendar.YEAR), (calendar.get(Calendar.MONTH) + 1), calendar.get(Calendar.DAY_OF_MONTH), calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE), calendar.get(Calendar.SECOND)); } catch (Exception e) { e.printStackTrace(); } return ""; } /** * 按周设置å¤ä»¤æ—¶ï¼Œä¿å˜æ—¶å°† * Mar 2nd Sun 00:00 * æ ¼å¼è½¬æ¢æˆ * 3-2-0 00:00:00 æ ¼å¼ * 3--1-1 代表三月最åŽä¸€ä¸ªå‘¨ä¸€ * 月份 "Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec" ç¬¬å‡ ä¸ª "1st","2nd","3rd","4th","5th" å‘¨å‡ "Mon","Tue","Wed","Thu","Fri","Sat","Sun" 月,是从1开始,1~12 周是从1开始,1~4,以åŠ-1,-1表示最åŽä¸€å‘¨ï¼Œæˆ–第四周是最åŽä¸€å‘¨ï¼Œä¹Ÿå¯ä»¥ç”¨4表示 从0~6,0表示周日 * @param time * @return */ private static final String[] months = new String[]{"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"}; private static final String[] numweeks = new String[]{"1st","2nd","3rd","4th","last"}; private static final String[] weekDays = new String[]{"Mon","Tue","Wed","Thu","Fri","Sat","Sun"}; public static String changeEngStrToNumStr(String time) { StringBuffer buffer = new StringBuffer(); if(!TextUtils.isEmpty(time)) { String[] array = time.split(" "); if(array!=null && array.length==4) { String month = array[0]; String numWeek = array[1]; String weekDay = array[2]; String date = array[3]; for(int i=0; i<months.length; i++) { if(months[i].equalsIgnoreCase(month)) { buffer.append(i+1).append("-"); break; } } for(int i=0; i<numweeks.length; i++) { if(numweeks[i].equalsIgnoreCase(numWeek) && !"last".equalsIgnoreCase(numWeek)) { buffer.append(i+1).append("-"); break; }else if("last".equalsIgnoreCase(numWeek)) //最åŽä¸€å‘¨ç”¨-1表示 { buffer.append("-1").append("-"); break; } } for(int i=0; i<weekDays.length; i++) { if(weekDays[i].equalsIgnoreCase(weekDay) && !"Sun".equalsIgnoreCase(weekDay)) { buffer.append(i+1).append(" "); break; }else if("Sun".equalsIgnoreCase(weekDay)) { //周日对应到0 buffer.append("0").append(" "); break; } } buffer.append(date).append(":00"); //最åŽå¢žåŠ â€œç§’â€çš„ä¸¤ä½ }else { return ""; } } return buffer.toString(); } /** * å°†æ•°å—æ ¼å¼å—符转æ¢ä¸ºè‹±æ–‡æ ¼å¼ * 03-02-00 00:00:00 * 03--1-00 00:00:00 * æ ¼å¼è½¬æ¢æˆ * Mar 2nd Sun 00:00 * @param time * @return */ public static String changeNumStrToEngStr(String time) { StringBuffer buffer = new StringBuffer(); boolean hasLastFlag = false; //是å¦åŒ…嫿œ€åŽä¸€ä¸ªçš„æ ‡è¯† -1 if(time!=null) { if(time.contains("-1")) { time = time.replace("-1","last"); hasLastFlag = true; } String[] array = time.split(" "); String[] dateArray = null; String[] timeArray = null; if(array!=null && array.length==2) { dateArray = array[0].split("-"); timeArray = array[1].split(":"); }else { return ""; } String month = null; String numWeek = null; String weekDay = null; String hour = null; String minute = null; if(dateArray!=null && dateArray.length==3 && timeArray!=null && timeArray.length==3) { month = dateArray[0]; numWeek = dateArray[1]; weekDay = dateArray[2]; hour = timeArray[0]; minute = timeArray[1]; }else { return ""; } if(month!=null && month.length()==2) { if("0".equals(month.substring(0,1))) { int index = Integer.parseInt(month.substring(1))-1; if(index<0 || index>11) { return ""; }else { buffer.append(months[index]).append(" "); } }else { int index = Integer.parseInt(month)-1; if(index<0 || index>11) { return ""; }else { buffer.append(months[index]).append(" "); } } } if(hasLastFlag) { buffer.append("last").append(" "); }else if(numWeek!=null && !numWeek.equalsIgnoreCase("last")) { int index = Integer.parseInt(numWeek.substring(1))-1; if(index<0 || index >4) { return ""; }else { buffer.append(numweeks[index]).append(" "); } } if(weekDay!=null && weekDay.equals("00")) //00 是周日,ä¸èƒ½æŒ‰å¸¸è§„åˆ¤æ– { buffer.append(weekDays[6]).append(" "); } else if(weekDay!=null && weekDay.length()==2 && !weekDay.equals("00")) { int index = Integer.parseInt(weekDay.substring(1))-1; if(index<0 || index >6) { return ""; }else { buffer.append(weekDays[index]).append(" "); } } buffer.append(hour).append(":").append(minute); } return buffer.toString(); } /** * ä½¿ç”¨é»˜è®¤è‹±è¯æ ¼å¼åŒ–时间,é¿å…多è¯è¨€çŽ¯å¢ƒä¸‹ï¼ˆå¦‚é˜¿æ‹‰ä¼¯è¯ï¼‰æ ¼å¼åŒ–的时间æœåŠ¡å™¨æ— æ³•è¯†åˆ« * @param formate * @return */ public static SimpleDateFormat getDateFormatWithUS(String formate){ return new SimpleDateFormat(formate, Locale.US); } /** * 计算两时间戳相差天数 * @param startTime * @param endTime * @return */ public static long dateDiff(long startTime, long endTime) { long nd = 24 * 60 * 60;// 一天的秒数 long nh = 60 * 60;// 䏀尿—¶çš„ç§’æ•° long nm = 60;// 一分钟的秒数 long ns = 1;// 一秒钟的秒数 long diff; long day = 0; // 获得两个时间的毫秒时间差异 diff = endTime - startTime; day = diff / nd;// 计算差多少天 long hour = diff % nd / nh;// è®¡ç®—å·®å¤šå°‘å°æ—¶ long min = diff % nd % nh / nm;// 计算差多少分钟 long sec = diff % nd % nh % nm / ns;// 计算差多少秒 if (day >= 1) { return day; } else { if (day == 0) { return 0; } else { return 0; } } } public static long getDateAddDays(int days){ Calendar c = Calendar.getInstance(); c.add(Calendar.DAY_OF_MONTH, days); return c.getTimeInMillis(); } /** * æ—¶é—´æˆ³è½¬æ¢æˆæ—¥æœŸæ ¼å¼å—符串 * @param seconds 精确到秒的å—符串 * @param format * @return */ public static String timeStamp2Date(String seconds,String format) { if(seconds == null || seconds.isEmpty() || seconds.equals("null")){ return ""; } if(format == null || format.isEmpty()){ format = "yyyy-MM-dd HH:mm:ss"; } SimpleDateFormat sdf = new SimpleDateFormat(format); return sdf.format(new Date(Long.valueOf(seconds+"000"))); } }