首页 > 技术文章 > java中用SimpleDateFormat 怎么把 2015-04-20T11:12:00.0+08:00 解析成 Date Calendar

kkxwze 2020-08-13 13:00 原文

 

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");//yyyy-MM-dd'T'HH:mm:ss
        Date date1 = null;
        try {
            date1 = formatter.parse("2018-11-07T18:37:42.803+08:00");
            System.out.println("先 解析成Data="+date1);//解析Data=Wed Nov 07 18:37:42 CST 2018
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String sDate=sdf.format(date1);//转换指定2格式=2018-11-07 18:37:42
        System.out.println(sDate);

 

package com.test;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

import org.junit.Test;


public class TestDate {
    @Test
    public void testSimpleDateFormat(){
        DateFormat dateFormat =new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

        Date date = new Date();
        System.out.println(dateFormat.format(date));

        String dateStr = "1990-12-12 12:12:12";
        Date date2 = null;
        try {
            date2 = dateFormat.parse(dateStr);
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        System.out.println(date2);
        

        
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");//yyyy-MM-dd'T'HH:mm:ss
        Date date1 = null;
        try {
            date1 = formatter.parse("2018-11-07T18:37:42.803+08:00");
            System.out.println("先 解析成Data="+date1);//解析Data=Wed Nov 07 18:37:42 CST 2018
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String sDate=sdf.format(date1);//转换指定2格式=2018-11-07 18:37:42
        System.out.println(sDate);
        
        String timeStr = "2017-02-23T00:00:00.0+08:00";

        
        SimpleDateFormat formatter1 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
        try {
        Date date11 = formatter1.parse(timeStr);
        System.out.println("转换为日期"+date11);
        System.out.println("转换为日期获取时间戳"+date11.getTime());
        System.out.println("转换为日期获取时间戳减两小时"+(date11.getTime()-7200000));
        System.out.println("转换为日期获取时间戳减两小时的日期格式"+new Date(date11.getTime()-7200000));
        } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        }
        
        
        
        }
    
    
    
    
}

 

用法: SimpleDateFormat sdf =   new SimpleDateFormat( " yyyy-MM-dd HH:mm:ss " );

        这一行最重要,它确立了转换的格式,yyyy是完整的公元年,MM是月份,dd是日期,至于HH:mm:ss

就不需要我再解释了吧!

        PS:为什么有的格式大写,有的格式小写,那是怕避免混淆,例如MM是月份,mm是分;HH是24小

时制,而hh是12小时制。

1.字符串转日期
 
2008-07-10 19:20:00 要把它转成日期,可以用 Date date = sdf.parse( " 2008-07-10 19:20:00 " );

2.日期转字符串

假如把今天的日期转成字符串可用 String str = sdf.format(new Date());

        这个字符串内容的格式类似2008-07-10 19:20:00。

        透过这个API我们便可以随心所欲的将日期转成我们想要的字符串格式,例如希望将日期输出成2008

年7月10日,我们可以这么写:

        SimpleDateFormat sdf =   new SimpleDateFormat( " yyyy年MM月dd日 " );

        String str = sdf.format(new Date());

        str便会依照我们设定的格式输出了

Calendar 
/**

     * 获取两个日期相差的月数

     */

    public static int getMonthDiff(Date d1, Date d2) {

        Calendar c1 = Calendar.getInstance();

        Calendar c2 = Calendar.getInstance();

        c1.setTime(d1);

        c2.setTime(d2);

        int year1 = c1.get(Calendar.YEAR);

        int year2 = c2.get(Calendar.YEAR);

        int month1 = c1.get(Calendar.MONTH);

        int month2 = c2.get(Calendar.MONTH);

        int day1 = c1.get(Calendar.DAY_OF_MONTH);

        int day2 = c2.get(Calendar.DAY_OF_MONTH);

        // 获取年的差值 

        int yearInterval = year1 - year2;

        // 如果 d1的 月-日 小于 d2的 月-日 那么 yearInterval-- 这样就得到了相差的年数

        if (month1 < month2 || month1 == month2 && day1 < day2)

            yearInterval--;

        // 获取月数差值

        int monthInterval = (month1 + 12) - month2;

        if (day1 < day2)

            monthInterval--;

        monthInterval %= 12;

        int monthsDiff = Math.abs(yearInterval * 12 + monthInterval);

        return monthsDiff;

    }

 

推荐阅读