/** * author : lipan * filename : DateUtils.java * create_time : 2014年4月23日 下午3:12:44 */ package com.sets.speedtest.utils; import java.text.SimpleDateFormat; import java.util.Arrays; import java.util.Calendar; import java.util.Date; import java.util.List; import java.util.Locale; import android.util.SparseIntArray; /** * @author : lipan * @create_time : 2014年4月23日 下午3:12:44 * @desc : 日期工具类 * @update_time : * @update_desc : * */ public class DateUtils { public static final String DATE_FORMAT_1 = "yyyy-MM-dd HH:mm"; public static final String DATE_FORMAT_2 = "HH:mm yyyy-MM-dd"; public static final int MAX_DAYS_BIG_MONTH = 31; //大月天数 public static final int MAX_DAYS_SMALL_MONTH = 30; //小月天数 public static final int MAX_DAYS_LEAP_YEAR = 29; //闰年2月最大天数 public static final int MAX_DAYS_NON_LEAP_YEAR = 28; //平年2月最大天数 public static final String DEF_MONTH_FMT = "yyyy年MM月";/**默认月份格式**/ public static final String DEF_MONTH_FMT_N = "yyyyMM";/**月份参数格式**/ /** * 获得时间表达式 * @param timestamp 时间戳 * @param pattern 时间表达式,null 时默认为 C.DEF_MONTH_FMT * @param offMonth 偏移月数 * @return */ public static String getMonthStr(long timestamp, String pattern , int offMonth) { //默认月份格式 if(null == pattern || "".equals(pattern)) { pattern = DEF_MONTH_FMT; } Calendar cal = Calendar.getInstance(Locale.CHINA); cal.setTimeInMillis(timestamp); cal.add(Calendar.MONTH, offMonth); SimpleDateFormat formatter = new SimpleDateFormat(pattern,Locale.CHINA); return formatter.format(cal.getTime()); } /** * 获得当前时间字符串 * @param pattern * @return */ public static String getCurrentDataStr(String pattern) { Calendar cal = Calendar.getInstance(Locale.CHINA); cal.setTimeInMillis(System.currentTimeMillis()); SimpleDateFormat formatter = new SimpleDateFormat(pattern,Locale.CHINA); return formatter.format(cal.getTime()); } /** * 获得当前时间毫秒数 * @param pattern * @return */ public static Long getCurrentMillis() { Calendar cal = Calendar.getInstance(Locale.CHINA); return cal.getTimeInMillis(); } /** * 判断指定日期是否为闰年 * * @param date * 指定的日期,null时返回 false * @return 是否为闰年 */ public static boolean isLeap(Date date) { boolean isLeap = false; if (null != date) { Calendar cal = Calendar.getInstance(Locale.CHINA); cal.setTime(date); int year = cal.get(Calendar.YEAR); if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) isLeap = true; } return isLeap; } /** * 获得各个时间的值 * @return */ public static int getCalVal(Calendar calendar ,int type) { if(type == Calendar.MONTH) //月份+1 { return calendar.get(type) +1 ; } return calendar.get(type); } /** * 获得指定日期所在年的每个月的最大天数 * @return */ public static SparseIntArray getMonthMaxDays(Calendar calendar) { SparseIntArray maxDays = new SparseIntArray(); Integer[] big = {1, 3, 5, 7, 8, 10, 12}; Integer[] small = {4, 6, 9, 11}; List<Integer> bigList = Arrays.asList(big); // 大月 List<Integer> smallList = Arrays.asList(small); //小月 if(calendar == null) { calendar = Calendar.getInstance(); } for(int i=1 ; i<=12 ; i++) { if(bigList.contains(i)) { maxDays.put(i, MAX_DAYS_BIG_MONTH); }else if(smallList.contains(i)) { maxDays.put(i, MAX_DAYS_SMALL_MONTH); }else { if(isLeap(calendar.getTime())) { maxDays.put(i, MAX_DAYS_LEAP_YEAR); }else { maxDays.put(i, MAX_DAYS_NON_LEAP_YEAR); } } } return maxDays; } }