Date格式转换

Date 格式转换

项目中涉及TimePicker,基本都会用到时间格式转换,在此总结一下,备用。

/**
 * 获取指定日期周
 *
 * @return
 */
private String getWeeks(Date date) {
    Calendar cal = Calendar.getInstance();//这一句必须要设置,否则美国认为第一天是周日,而我国认为是周 
     一,对计算当期日期是第几周会有错误
    cal.setFirstDayOfWeek(Calendar.MONDAY); // 设置每周的第一天为星期一
    cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);// 每周从周一开始
    cal.setMinimalDaysInFirstWeek(7); // 设置每周最少为7天
    cal.setTime(date);
    int weeks = cal.get(Calendar.WEEK_OF_YEAR);
    int year = cal.get(Calendar.YEAR);
    Log.e(TAG, "getWeeks: " + weeks + ":" + year);

    this.week = year + "-" + weeks;
    return year + "-" + weeks;
}

/**
 * 获取年
 *
 * @return
 */
private String getYear(Date date) {
    
    Calendar cal = Calendar.getInstance();//这一句必须要设置,否则美国认为第一天是周日,而我国认为是周 
    一,对计算当期日期是第几周会有错误
    cal.setFirstDayOfWeek(Calendar.MONDAY); // 设置每周的第一天为星期一
    cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);// 每周从周一开始
    cal.setMinimalDaysInFirstWeek(7); // 设置每周最少为7天
    cal.setTime(date);
    int year = cal.get(Calendar.YEAR);
    this.year = year + "";
    return year + "";

}

/**
 * 获取年月
 *
 * @return
 */
private String getMonth(Date date) {
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM");
    this.month = format.format(date);
    return format.format(date);

}

/**
 * 获取年月日
 *
 * @param date
 * @return
 */
private String getTime(Date date) {//可根据需要自行截取数据显示
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
    this.day = format.format(date);
    return format.format(date);
}

/**
 * 把GMT+8.0时间转换成UTC
 *
 * @param date
 * @return
 */
private String getTimes(Date date) {
    Calendar cal = Calendar.getInstance(Locale.CHINA);
    int zoneOffset = cal.get(java.util.Calendar.ZONE_OFFSET);
    int dstOffset = cal.get(java.util.Calendar.DST_OFFSET);
    cal.add(java.util.Calendar.MILLISECOND, -(zoneOffset + dstOffset));
    // this.day =DateFormat.format("yyyy'-'MM'-'dd'T'kk':'mm':'ss'Z'", cal)+"";
    this.day = DateFormat.format("yyyy'-'MM'-'dd'T'kk':'mm':'ss'Z'", date) + "";
    return DateFormat.format("yyyy'-'MM'-'dd'T'kk':'mm':'ss'Z'", date) + "";

}

遇到一个问题是:后台返回的是时间格式为:"2018-11-30T08:55:34.971Z"的字符串,时候按照正常套路报错。下面是解析的办法,代码如下:

public String UTCStringtODefaultString(String UTCString) {
try{
UTCString = UTCString.replace("Z", " UTC");
SimpleDateFormat utcFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS Z");
SimpleDateFormat defaultFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = utcFormat.parse(UTCString);
return defaultFormat.format(date);
} catch(ParseException pe)
{
pe.printStackTrace();
return null;
}
}

本地与UTC时间相互转换工具类

public class Local2UTCTimeUtils {
/**
 * 当地时间 ---> UTC时间
 *
 * @return
 */
public static String Local2UTC() {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    sdf.setTimeZone(TimeZone.getTimeZone("gmt"));
    String gmtTime = sdf.format(new Date());
    return gmtTime;
}

/**
 * 任意时间---> UTC时间
 *
 * @return
 */
public static String Local2UTC(String localTime) {
    SimpleDateFormat localFormater = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//当地时间格式
    localFormater.setTimeZone(TimeZone.getDefault());
    Date gpsLocalDate = null;
    try {
        gpsLocalDate = localFormater.parse(localTime);
    } catch (ParseException e) {
        e.printStackTrace();
    }

    SimpleDateFormat utcFormater = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//UTC时间格式
    utcFormater.setTimeZone(TimeZone.getTimeZone("UTC"));
    String UTCTime = utcFormater.format(gpsLocalDate.getTime());
    return UTCTime;
}


/**
 * UTC时间 ---> 当地时间
 *
 * @param utcTime UTC时间 UTC时间格式需要确认一下
 * @return
 */
public static String utc2Local(String utcTime) {
    SimpleDateFormat utcFormater = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//UTC时间格式
    utcFormater.setTimeZone(TimeZone.getTimeZone("UTC"));
    Date gpsUTCDate = null;
    try {
        gpsUTCDate = utcFormater.parse(utcTime);
    } catch (ParseException e) {

        e.printStackTrace();
        //时间错了返回返回的时间
        return utcTime;
    }
    SimpleDateFormat localFormater = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//当地时间格式
    localFormater.setTimeZone(TimeZone.getDefault());
    String localTime = localFormater.format(gpsUTCDate.getTime());
    return localTime;

}
}

你可能感兴趣的:(Date格式转换)