美文网首页
Date格式转换

Date格式转换

作者: 落叶随风花落入泥 | 来源:发表于2018-11-21 15:02 被阅读0次

    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格式转换

          本文链接:https://www.haomeiwen.com/subject/amlcqqtx.html