日期操作
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