android-dateFormat

凌昕
2023-12-01

初始化

  1. 可以利用Calendar获得本地实例化时间Date对象 Calendar.getInstance().getTime()
  2. 也可以直接通过构造函数获得 new Date()
  3. 初始化返回的对象形如 Tue Sep 17 21:43:47 EDT 2019 (星期几 / 月 / 日 /时 / 分 /秒 /东区 /年)

DateFormat


可以使用formatDate转成String

//2019年9月17日 默认只展示年月日,而且是本地时间 getDateInstance会获得当前国家的常用格式
String myStr = DateFormat.getDateInstance().format(Calendar.getInstance().getTime()); 

同时可以为dateformat设置Locale,有两种方式来设置Locale,从而将日期格式转换为指定地区的表达形式

  • Locale对象

Locale locale = new Locale("en", "US"); //指定了美国地区

DateFormat usf = DateFormat.getDateInstance(DateFormat.LONG, locale);

String usString = usf.format(new Date()); //September 17, 2019 

  • 属性值

DateFormat df = DateFormat.getDateInstance(DateFormat.LONG, Locale.FRANCE); //指定了法国

String dfString = df.format(new Date()); //17 septembre 2019

Parse

可以使用parseString转成Date

String date3 = df.format(date1); // 17 septembre 2019(法国)

String date5 = usf.format(date1); //September 17, 2019 美国

Date date2 = df.parse(date3); //Tue Sep 17 00:00:00 EDT 2019 (法国)

Date date4 = usf.parse(date5); //Tue Sep 17 00:00:00 EDT 2019 (美国)

格式化类型

  • SHORT 全数字, 例如12.13.52 或者 3:30pm (具体时间精确到时:分)
  • MEDIUM 例如 Jan 12, 1952 (月份缩写)
  • LONG 例如 January 12, 1952 或者 3:30:32pm (月份不缩写,具体时间精确到秒)
  • FULL 例如 Tuesday, April 12, 1952 AD 或者 3:30:42pm PST.

下面是常见的SimpleDateFormat的使用方法

/**
     *   SimpleDateFormat函数语法:
     *   G 年代标志符
     *   y 年
     *   M 月
     *   d 日
     *   h 时表示12小时制,在上午或下午 (1~12)
     *   H 时表示24小时制,在一天中 (0~23)
     *   m 分
     *   s 秒
     *   S 毫秒
     *   E 周几
     *   D 一年中的第几天
     *   F 一月中第几个星期几
     *   w 一年中第几个星期
     *   W 一月中第几个星期
     *   a 上午 / 下午 标记符
     *   k 时 在一天中 (1~24) (24小时制,比如上午9点就是9,不会再是09)
     *   K 时 在上午或下午 (0~11) (12小时制, 比如上午9点就是9,不会再是09)
     *   z 时区
     *  
     */

    private void simpleDateFormatFunction() {
        SimpleDateFormat myFmt = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
        SimpleDateFormat myFmt1 = new SimpleDateFormat("yy/MM/dd HH:mm");
        SimpleDateFormat myFmt2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//等价于now.toLocaleString()
        SimpleDateFormat myFmt3 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒 E ");
        SimpleDateFormat myFmt4 = new SimpleDateFormat(
                "一年中的第 D 天 一年中第w个星期 一月中第W个星期 在一天中k时 z时区");
        SimpleDateFormat myFmt5 = new SimpleDateFormat("yyyy年MM月dd日 ahh时mm分ss秒");
        Date now = new Date(); //在模拟器上运行,得到的时间正好比本地时间晚12个小时,模拟器设置里面的时区不对,设置的是北美时区,修改为中国时区就对了
        System.out.println(myFmt.format(now));  // 2019年10月12日 09时47分16秒   yyyy年MM月dd日 HH时mm分ss秒
        System.out.println(myFmt1.format(now)); // 19/10/12 09:47  yy/MM/dd HH:mm
        System.out.println(myFmt2.format(now)); // 2019-10-12 09:47:16 yyyy-MM-dd HH:mm:ss
        System.out.println(myFmt3.format(now)); // 2019年10月12日 09时47分16秒 周六 yyyy年MM月dd日 HH时mm分ss秒 E
        System.out.println(myFmt4.format(now)); // 一年中的第 285 天 一年中第41个星期 一月中第2个星期 在一天中9时 GMT+08:00时区 一年中的第 D 天 一年中第w个星期 一月中第W个星期 在一天中k时 z时区
        System.out.println(now.toString()); // Sat Oct 12 10:06:08 GMT+08:00 2019
        System.out.println(now.toLocaleString()); //2019年10月12日 上午10:25:06
        System.out.println(myFmt5.format(now)); //2019年10月12日 上午10时30分39秒
        System.out.println();

        //年的不同长度表示
        SimpleDateFormat yFmt1 = new SimpleDateFormat("yyyy年");
        String year1 = (yFmt1.format(now)); //2019年
        SimpleDateFormat yFmt2 = new SimpleDateFormat("yyy年");
        String year2 = (yFmt2.format(now)); //2019年
        SimpleDateFormat yFmt3 = new SimpleDateFormat("yy年");
        String year3 = (yFmt3.format(now)); //19年
        SimpleDateFormat yFmt4 = new SimpleDateFormat("y年");
        String year4 = (yFmt4.format(now)); //2019年
        //月的不同长度表示
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-M-dd");//yyyy-M-dd 和 yyyy-MM-dd 都可以表示2008-04-24 而且这里必须注意format的格式必须同字符串的划分根式相同,否则crash
        String dstr = "2008-04-24";
        try {
            Date date = sdf.parse(dstr); //Thu Apr 24 00:00:00 GMT+08:00 2008
            SimpleDateFormat mFmt1 = new SimpleDateFormat("yyyy-M-dd");
            String month1 = (mFmt1.format(date)); //2008-4-24
            SimpleDateFormat mFmt2 = new SimpleDateFormat("yyyy-MM-dd");
            String month2 = (mFmt2.format(date)); //2008-04-24
            System.out.println();
        } catch (ParseException e) {
            e.printStackTrace();
        }

        //E 周几的不同长度表示
        Date date = new Date(); //Thu Apr 24 00:00:00 GMT+08:00 2008
        SimpleDateFormat eFmt1 = new SimpleDateFormat("这是E");
        String e1 = (eFmt1.format(date)); //周六 如果系统语言是英文的,那么就是Sat
        SimpleDateFormat eFmt2 = new SimpleDateFormat("这是EEEE");
        String e2 = (eFmt2.format(date)); //星期六 如果系统语言是英文的,那么就是Saturday
        System.out.println();

        //D 一年中的第几天不同长度表示
        Date date1 = new Date(); //Thu Apr 24 00:00:00 GMT+08:00 2008
        SimpleDateFormat dFmt1 = new SimpleDateFormat("这是D");
        String d1 = (dFmt1.format(date1)); //这是285
        SimpleDateFormat dFmt2 = new SimpleDateFormat("这是DDDD");
        String d2 = (dFmt2.format(date1)); //这是0285
        System.out.println();

        //F 一月中第几个星期几不同长度表示
        SimpleDateFormat fFmt1 = new SimpleDateFormat("这是第F个");
        String f1 = (fFmt1.format(new Date())); //这是第2个
        SimpleDateFormat fFmt2 = new SimpleDateFormat("这是第FFFF个");
        String f2 = (fFmt2.format(new Date())); //这是第0002个
        System.out.println();

        //w 一年中第几个星期不同长度表示
        SimpleDateFormat wFmt1 = new SimpleDateFormat("第w个星期");
        String w1 = (wFmt1.format(new Date())); //第41个星期
        SimpleDateFormat wFmt2 = new SimpleDateFormat("第wwww个星期");
        String w2 = (wFmt2.format(new Date())); //第0041个星期
        System.out.println();

        //W 一月中第几个星期不同长度表示
        SimpleDateFormat WFmt1 = new SimpleDateFormat("一月中第W个星期");
        String W1 = (WFmt1.format(new Date())); //一月中第2个星期
        SimpleDateFormat WFmt2 = new SimpleDateFormat("一月中第WWWW个星期");
        String W2 = (WFmt2.format(new Date())); //一月中第0002个星期
        System.out.println();

        //中英文表示上午和下午a 和 aa
        SimpleDateFormat aFmt = new SimpleDateFormat("ahh:mm");
        String a = (aFmt.format(new Date())); //下午 03:12 或者 PM 03:15
        SimpleDateFormat aaFmt = new SimpleDateFormat("aahh:mm");
        String aa = (aaFmt.format(new Date())); //下午 03:12 或者 PM 03:15
        SimpleDateFormat a2Fmt = new SimpleDateFormat("hh:mma");
        String a2 = (a2Fmt.format(new Date())); //03:14 下午 或者 03:15 PM
        SimpleDateFormat aa2Fmt = new SimpleDateFormat("hh:mmaa");
        String aa2 = (aa2Fmt.format(new Date())); //03:14 下午 或者 03:15 PM
        System.out.println();

        //小时的不同长度表示,12小时制h / hh 或者24小时制 H / HH
        SimpleDateFormat hFmt = new SimpleDateFormat("h:mm");
        String h1 = (hFmt.format(new Date())); // 3:59
        SimpleDateFormat hFmt2 = new SimpleDateFormat("hh:mm");
        String h2 = (hFmt2.format(new Date())); // 03:59
        System.out.println();
    }

 

 类似资料: