深入理解Java常用类-----时间日期 (2)

结果如下:

这里写图片描述

上述代码运行在不同的时候的结果都是不一样的,写作时的时间:2017/5/29 14:02。需要注意一点的是,month属性是从0开始的,也就是0表示一月,4表示5月,星期也是一样。此外,上述中的AM_PM表示的是上下午的概念,上午为0,下午为1。

除了获取有关日期时间的信息,我们也是有可以用来设置他们的方法的:

//为指定属性设置值 public void set(int field, int value) //设置年月日等,很多重载 public final void set(int year, int month, int date) ...... //清空所有该Calendar实例的属性值 public final void clear()

除此之外,还有一些通过计算来设置Calendar属性的方法:

//为指定属性添加值 abstract public void add(int field, int amount);

例如:

public static void main(String[] args){ Calendar calendar = Calendar.getInstance(); System.out.print(calendar.get(Calendar.YEAR)); calendar.add(Calendar.YEAR,10); System.out.print(calendar.get(Calendar.YEAR)); }

改程序将输出:2017 2027。还有一个roll方法也很有意思:

abstract public void roll(int field, boolean up); //重载 public void roll(int field, int amount) { while (amount > 0) { roll(field, true); amount--; } while (amount < 0) { roll(field, false); amount++; } }

我们需要记住的是,roll方法完成的工作是和add一样的,只是add方法处理了越界的特殊情况(越界会向上进一位),而roll方法会重新回到初始值再加。例如:

public static void main(String[] args){ Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.MONTH, 11);//十二月 System.out.println(calendar.getTime()); //calendar.add(Calendar.MONTH,5); //calendar.roll(Calendar.MONTH,5); System.out.println(calendar.getTime()); }

上述程序我们设置Calendar日期为2017/12,针对上述两种方式add和roll,输出结果如下:

这里写图片描述


这里写图片描述

对于12月,add方法加5之后,month为5月但是已经是2018年,而roll则没有向上进位,这就是区别,实际使用的时候还需加以区分。当然,如果你对某个属性的范围不是很明确,可以使用下面两个方法获取:

abstract public int getMinimum(int field); abstract public int getMaximum(int field);

还有一些有关比较的函数,和Date是类似的:

public boolean equals(Object obj) public int compareTo(Calendar anotherCalendar) public boolean after(Object when) public boolean before(Object when)

三、DateFormat处理格式转换
     DateFormat是一个抽象类,该类主要用于实现Date对象和字符串之间相互转换, 涉及到两个转换的方法:

//将Date类型转换为String类型 public final String format(Date date) //将String类型转换Date类型 public Date parse(String source)

除此之外,DateFormat还提供了四个静态常量,代表着四种不同的风格。不同的风格输出信息的内容详尽程度不同,默认的风格是MEDIUM。(折中)

public static final int FULL = 0; public static final int LONG = 1; public static final int MEDIUM = 2; public static final int SHORT = 3; public static final int DEFAULT = MEDIUM;

该类是抽象类,一样需要使用静态工厂获取实例对象。

public final static DateFormat getTimeInstance() public final static DateFormat getTimeInstance(int style) public final static DateFormat getTimeInstance(int style,Locale aLocale) public final static DateFormat getDateInstance() public final static DateFormat getDateInstance(int style) public final static DateFormat getDateInstance(int style,Locale aLocale) public final static DateFormat getDateTimeInstance() public final static DateFormat getDateTimeInstance(int dateStyle,int timeStyle) public final static DateFormat getDateTimeInstance(int dateStyle, int timeStyle, Locale aLocale)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzjgxx.html