Joyen.fu
日中则昃,月盈则食。

日期操作

java.util包中

Date

public class Dateextends Object implements Serializable, Cloneable, Comparable<Date>

此类是日期操作的一个重要的类。

Calendar  抽象类 

public abstract class Calendar extends Object implements Serializable, Cloneable, Comparable<Calendar>

通过此类可以将时间精确到毫秒,此类是一个抽象类,使用时必须依靠其子类。

GregorianCalendar

public class GregorianCalendar extends Calendar 此类是Calendar的唯一子类。

日期的格式化

java.text包中

Format

public abstract class Format extends Objectimplements Serializable, Cloneable

Format 是一个用于格式化语言环境敏感的信息(如日期、消息和数字)的抽象基类

实现它的子类有:DateFormat, MessageFormat, NumberFormat

DateFormat和SimpleDateFormat

public abstract class DateFormat extends Format

此类是个抽象类,开发中一般不直接使用,而是用SimpleDateFormat。

public class SimpleDateFormat extends DateFormat

常用的日期字符串转换:

 1 package com.fwj.conver;
 2 
 3 import java.text.DateFormat;
 4 import java.text.ParseException;
 5 import java.text.SimpleDateFormat;
 6 import java.util.Date;
 7 
 8 public class Conver {
 9     public Conver() {
10         
11     }
12     
13     public static String ConverToString(Date date) {
14         DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
15         String strDate = df.format(date);
16         return strDate;
17     }
18     
19     public static Date ConverToDate(String strDate) throws ParseException {
20         DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
21         Date date = df.parse(strDate);
22         return date;
23     }
24 }

SimpleDateFormat例子:

 1 package com.fwj.dateformat;
 2 
 3 import java.text.ParseException;
 4 import java.text.SimpleDateFormat;
 5 import java.util.Date;
 6 
 7 public class SimpleDateFormatDemo {
 8 
 9     public static void main(String[] args) throws ParseException {
10 
11         String str = "2012-6-12 09:45:52.632";
12         SimpleDateFormat sf1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS");//
13         SimpleDateFormat sf2 = new SimpleDateFormat("yyyy年MM月dd日hh时mm分ss秒SSS毫秒");
14         Date date = sf1.parse(str);//按照sf1给定的格式取得日期
15         String dateStr = sf2.format(date);//按照sf2给定的格式解析Date
16         System.out.println(dateStr);
17     }
18 }

运行结果:

2012年06月12日09时45分52秒632毫秒

使用SimpleDateFormat中的applyPattern()方法设定模式

 1 package com.fwj.dateformat;
 2 
 3 import java.text.ParseException;
 4 import java.text.SimpleDateFormat;
 5 import java.util.Date;
 6 
 7 public class SimpleDateFormatDemo {
 8 
 9     public static void main(String[] args) throws ParseException {
10 
11         String str = "2012-6-12 09:45:52.632";
12         SimpleDateFormat sf = new SimpleDateFormat();
13         sf.applyPattern("yyyy-MM-dd hh:mm:ss.SSS");
14         Date date = sf.parse(str);//按照sf1给定的格式取得日期
15         sf.applyPattern("yyyy年MM月dd日hh时mm分ss秒SSS毫秒");
16         String dateStr = sf.format(date);//按照sf2给定的格式解析Date
17         System.out.println(dateStr);
18     }
19 }

NumberFormat和DecimalFormat

DecimalFormat是NumberFormat的子类

 1 package com.fwj.dateformat;
 2 
 3 import java.text.NumberFormat;
 4 
 5 public class NumberFormatDemo {
 6 
 7     public static void main(String[] args) {
 8 
 9         int num = 12032040;
10         NumberFormat nf = NumberFormat.getInstance();
11         System.out.println(nf.format(num));
12     }
13 
14 }

运行结果:

1 12,032,040

中文环境下每三位隔开。

下面看DecimalFormat例子:

DecimalFormat与SimpleDateFormate类似,在此类中也存在着一套模板设置。

 1 package com.fwj.dateformat;
 2 
 3 import java.text.DecimalFormat;
 4 
 5 public class FormatDemo {
 6 
 7     public void format(String pattern,double value){
 8         DecimalFormat df = new DecimalFormat(pattern);//指定操作模板
 9         String str = df.format(value);
10         System.out.println("使用"+pattern+"格式化数字"+value+"为:"+str);
11     }
12 }
 1 package com.fwj.dateformat;
 2 
 3 public class FormatDemoTest {
 4 
 5     public static void main(String[] args) {
 6 
 7         FormatDemo demo = new FormatDemo();
 8         demo.format("###,###.###", 33652.36952);
 9         demo.format("000,000.000", 33652.36952);
10         demo.format("###,###.###¥", 33652.36952);
11         demo.format("000,000.000¥", 33652.36952);
12         demo.format("##.###%", 0.06952);
13         demo.format("00.###%", 0.06952);
14         demo.format("##.###\u2030", 0.06952);
15     }
16 }

运行结果:

使用###,###.###格式化数字33652.36952为:33,652.37
使用000,000.000格式化数字33652.36952为:033,652.370
使用###,###.###¥格式化数字33652.36952为:33,652.37¥
使用000,000.000¥格式化数字33652.36952为:033,652.370¥
使用##.###%格式化数字0.06952为:6.952%
使用00.###%格式化数字0.06952为:06.952%
使用##.###‰格式化数字0.06952为:69.52‰

大数操作

大数操作是指数据非常大,大到已经超过了整个数据类型的保存范围,应此,此时就需要使用对象的形式进行操作,如果碰到这种为题,实际上都是使用字符串进行处理的。

为了解决这一问题,Java中提供了两大数字对象:BigInteger,BigDecimal

BigInteger

BigInteger表示大的整型数据

public class BigInteger extends Numberimplements Comparable<BigInteger>

 1 package com.fwj.dateformat;
 2 
 3 import java.math.BigInteger;
 4 
 5 public class BigIntegerDemo {
 6 
 7     public static void main(String[] args) {
 8 
 9         String mun = "88888888888888888888888888";
10         BigInteger bt1 = new BigInteger(mun);
11         BigInteger bt2 = new BigInteger(mun);
12         System.out.println("加法操作:"+bt1.add(bt2));
13     }
14 }

运行结果:

加法操作:177777777777777777777777776

BigDecimal

BigDecimal类的主要功能是进行小数的大数计算,最重要的是可以精确到指定的四舍五入。

 1 package com.fwj.dateformat;
 2 
 3 import java.math.BigDecimal;
 4 
 5 public class BigIntegerDemo {
 6 
 7     public static void main(String[] args) {
 8 
 9         String mun = "88888888888888888888888888";
10         BigDecimal bt1 = new BigDecimal(mun);
11         BigDecimal bt2 = new BigDecimal(mun);
12         System.out.println("加法操作:"+bt1.add(bt2).doubleValue());
13     }
14 }

运行结果:

加法操作:1.7777777777777777E26

 

posted on 2013-08-01 16:49  Joyen.fu  阅读(219)  评论(0编辑  收藏  举报