Java时间相关内容进修(5) SimpleDateFormat先容
当前位置:以往代写 > JAVA 教程 >Java时间相关内容进修(5) SimpleDateFormat先容
2019-06-14

Java时间相关内容进修(5) SimpleDateFormat先容

Java时间相关内容进修(5) SimpleDateFormat先容

副标题#e#

先容SimpleDateFormat。

SimpleDateFormat 先容

SimpleDateFormat 是一个名目化Date 以及 理会日期字符串 的东西。它的最常用途是,可以或许凭据指定的名目来对Date举办名目化,然后我们利用可以名目化Date后获得的字符串。

更严格的说,SimpleDateFormat 是一个以与语言情况有关的方法来名目化息争析日期的详细类。它答允举办名目化(日期 -> 文本)、理会(文本 -> 日期)和类型化。

SimpleDateFormat的结构函数:

// 结构函数
SimpleDateFormat()
SimpleDateFormat(String pattern)
SimpleDateFormat(String template, DateFormatSymbols value)
SimpleDateFormat(String template, Locale locale)
     
// 非结构函数
void                             applyLocalizedPattern(String template)
void                             applyPattern(String template)
Object                           clone()
boolean                          equals(Object object)
StringBuffer                     format(Date date, StringBuffer buffer, FieldPosition fieldPos)
AttributedCharacterIterator      formatToCharacterIterator(Object object)
Date                             get2DigitYearStart()
DateFormatSymbols                getDateFormatSymbols()
int                              hashCode()
Date                             parse(String string, ParsePosition position)
void                             set2DigitYearStart(Date date)
void                             setDateFormatSymbols(DateFormatSymbols value)
String                           toLocalizedPattern()
String                           toPattern()

SimpleDateFormat 简朴示范:

// 新建date工具,时间是2013-09-19

Date date = new Date(113,8,19);

// 新建“SimpleDateFormat工具”,并配置 sdf 的“名目化模式”

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

// 用 sdf 名目化 date,并返回字符串。

String str = sdf.format(date);

SimpleDateFormat 相关名目说明

日期和时间模式

日期和时间名目由日期和时间模式 字符串指定。在日期和时间模式字符串中,未加引号的字母 ‘A’ 到 ‘Z’ 和 ‘a’ 到 ‘z’ 被表明为模式字母,用来暗示日期或时间字符串元素。文本可以利用单引号 (‘) 引起来,以免举办表明。"”" 暗示单引号。所有其他字符均不表明;只是在名目化时将它们简朴复制到输出字符串,可能在理会时与输入字符串举办匹配。

界说了以下模式字母(所有其他字符 ‘A’ 到 ‘Z’ 和 ‘a’ 到 ‘z’ 都被保存):

Java时间相关内容学习(5) SimpleDateFormat介绍


#p#副标题#e#

模式字母凡是是反复的,其数量确定其准确暗示:

Text: 对付名目化来说,假如模式字母的数量大于便是 4,则利用完全形式;不然,在可用的环境下利用短形式或缩写形式。对付理会来说,两种形式都是可接管的,与模式字母的数量无关。

Number: 对付名目化来说,模式字母的数量是最小的数位,假如数位不足,则用 0 填充以到达此数量。对付理会来说,模式字母的数量被忽略,除非必需分隔两个相邻字段。

Year: 假如名目器的 Calendar 是格里高利历,则应用以下法则。

Month: 假如模式字母的数量为 3 或大于 3,则将月份表明为 text;不然表明为 number。

对付名目化来说,假如模式字母的数量为 2,则年份截取为 2 位数,不然将年份表明为 number。

对付理会来说,假如模式字母的数量大于 2,则年份照字面意义举办表明,而不管数位是几多。因此利用模式 "MM/dd/yyyy",将 "01/11/12" 理会为公元 12 年 1 月 11 日。

在理会缩写年份模式("y" 或 "yy")时,SimpleDateFormat 必需相对付某个世纪来表明缩写的年份。这通过将日期调解为 SimpleDateFormat 实例建设之前的 80 年和之后 20 年范畴内来完成。譬喻,在 "MM/dd/yy" 模式下,假如 SimpleDateFormat 实例是在 1997 年 1 月 1 日建设的,则字符串 "01/11/12" 将被表明为 2012 年 1 月 11 日,而字符串 "05/04/64" 将被表明为 1964 年 5 月 4 日。在理会时,只有刚好由两位数字构成的字符串(如 Character#isDigit(char) 所界说的)被理会为默认的世纪。其他任何数字字符串将照字面意义举办表明,譬喻单数字字符串,3 个或更大都字构成的字符串,可能不都是数字的两位数字字符串(譬喻"-1")。因此,在沟通的模式下, "01/02/3" 或 "01/02/003" 表明为公元 3 年 1 月 2 日。同样,"01/02/-3" 理会为公元前 4 年 1 月 2 日。

不然,则应用日历系统特定的形式。对付名目化息争析,假如模式字母的数量为 4 或大于 4,则利用日历特定的 long form。不然,则利用日历特定的 short or abbreviated form。

#p#分页标题#e#

SimpleDateFormat 还支持当地化日期和时间模式 字符串。在这些字符串中,以上所述的模式字母可以用其他与语言情况有关的模式字母来替换。SimpleDateFormat 不处理惩罚除模式字母之外的文本当地化;而由类的客户端来处理惩罚。

示例

以下示例显示了如安在美国语言情况中表嫡期和时间模式。给定的日期和时间为美国太平洋时区的当地时间 2001-07-04 12:08:56。

Java时间相关内容学习(5) SimpleDateFormat介绍

日期名目是差异步的。发起为每个线程建设独立的名目实例。假如多个线程同时会见一个名目,则它必需是外部同步的。

SimpleDateFormat 示例

下面,我们通过实例进修如何利用SimpleDateFormat。

源码如下(SimpleDateFormatTest.java):

import java.util.Date;
import java.util.Locale;
import java.util.Calendar;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
     
/**
 * SimpleDateFormat 的API测试措施
 *
 * @author skywang
 * @email [email protected]
 */
public class SimpleDateFormatTest {
         
    public static void main(String[] args) {
     
        // 通过SimpleDateFormat 获取日期/时间:有多种名目
        testSimpleDateFormats() ;
     
        // 通过DateFormat 获取日期/时间
        superTest() ;
    }
     
    /**
     * 通过SimpleDateFormat 获取日期/时间。有多种名目可以选择
     */
    private static void testSimpleDateFormats() {
        String[] formats = new String[] {
            "HH:mm",                                // 14:22
            "h:mm a",                               // 2:22 下午
            "HH:mm z",                              // 14:22 CST
            "HH:mm Z",                              // 14:22 +0800
            "HH:mm zzzz",                           // 14:22 中国尺度时间
            "HH:mm:ss",                             // 14:22:30
            "yyyy-MM-dd",                           // 2013-09-19
            "yyyy-MM-dd HH:mm",                     // 2013-09-19 14:22
            "yyyy-MM-dd HH:mm:ss",                  // 2013-09-19 14:22:30
            "yyyy-MM-dd HH:mm:ss zzzz",             // 2013-09-19 14:22:30 中国尺度时间
            "EEEE yyyy-MM-dd HH:mm:ss zzzz",        // 礼拜四 2013-09-19 14:22:30 中国尺度时间
            "yyyy-MM-dd HH:mm:ss.SSSZ",             // 2013-09-19 14:22:30.000+0800
            "yyyy-MM-dd'T'HH:mm:ss.SSSZ",           // 2013-09-19T14:22:30.000+0800
            "yyyy.MM.dd G 'at' HH:mm:ss z",         // 2013.09.19 公元 at 14:22:30 CST
            "K:mm a",                               // 2:22 下午, CST
            "EEE, MMM d, ''yy",                     // 礼拜四, 九月 19, '13
            "hh 'o''clock' a, zzzz",                // 02 o'clock 下午, 中国尺度时间
            "yyyyy.MMMMM.dd GGG hh:mm aaa",         // 02013.九月.19 公元 02:22 下午
            "EEE, d MMM yyyy HH:mm:ss Z",           // 礼拜四, 19 九月 2013 14:22:30 +0800
            "yyMMddHHmmssZ",                        // 130919142230+0800
            "yyyy-MM-dd'T'HH:mm:ss.SSSZ",           // 2013-09-19T14:22:30.000+0800
            "EEEE 'DATE('yyyy-MM-dd')' 'TIME('HH:mm:ss')' zzzz",        // 礼拜四 2013-09-19 14:22:30 中国尺度时间
        };
     
        //Date date = (new Date(0));                    // date为1970-01-01 07:00:00
		// 查察本栏目
HH:mm    14:22
                        h:mm a    2:22 下午
                       HH:mm z    14:22 CST
                       HH:mm Z    14:22 +0800
                    HH:mm zzzz    14:22 中国尺度时间
                      HH:mm:ss    14:22:30
                    yyyy-MM-dd    2013-09-19
              yyyy-MM-dd HH:mm    2013-09-19 14:22
           yyyy-MM-dd HH:mm:ss    2013-09-19 14:22:30
      yyyy-MM-dd HH:mm:ss zzzz    2013-09-19 14:22:30 中国尺度时间
 EEEE yyyy-MM-dd HH:mm:ss zzzz    礼拜四 2013-09-19 14:22:30 中国尺度时间
      yyyy-MM-dd HH:mm:ss.SSSZ    2013-09-19 14:22:30.000+0800
    yyyy-MM-dd'T'HH:mm:ss.SSSZ    2013-09-19T14:22:30.000+0800
  yyyy.MM.dd G 'at' HH:mm:ss z    2013.09.19 公元 at 14:22:30 CST
                        K:mm a    2:22 下午
              EEE, MMM d, ''yy    礼拜四, 九月 19, '13
         hh 'o''clock' a, zzzz    02 o'clock 下午, 中国尺度时间
  yyyyy.MMMMM.dd GGG hh:mm aaa    02013.九月.19 公元 02:22 下午
    EEE, d MMM yyyy HH:mm:ss Z    礼拜四, 19 九月 2013 14:22:30 +0800
                 yyMMddHHmmssZ    130919142230+0800
    yyyy-MM-dd'T'HH:mm:ss.SSSZ    2013-09-19T14:22:30.000+0800
EEEE 'DATE('yyyy-MM-dd')' 'TIME('HH:mm:ss')' zzzz    礼拜四 DATE(2013-09-19) TIME(14:22:30) 中国尺度时间
     
time=14:22:30
date=2013-9-19
datetime=2013-9-19 14:22:30

    关键字:

在线提交作业