取得当前日期(定义成一个类)

开发中经常需要取得日期,而且每次取得日期的时候代码都会重复,所以既然是重复的代码就可以将其定义成一个类,以方便重复调用,但是在操作的时候有一点特别需要注意:

如果月会是9月,则应该显示09,但是如果是09的话,则数字肯定会忽略到0。

1.Calendar 类操作 (取得日期时间、中文的日期时间、时间戳)

除了取出日期之外,取得时间戳也是一种比较常见的操作,例如:以下日期:

2009-01-16 11:25:34.953

时间戳:20090116112534953

[java]  view plain copy
  1. import java.util.* ;    // 导入需要的工具包  
  2. class DateTime{     // 以后直接通过此类就可以取得日期时间  
  3.     private Calendar calendar = null ;      // 声明一个Calendar对象,取得时间  
  4.     public DateTime(){                      // 构造方法中直接实例化对象  
  5.         this.calendar = new GregorianCalendar() ;     
  6.     }  
  7.     public String getDate(){        // 得到的是一个日期:格式为:yyyy-MM-dd HH:mm:ss.SSS  
  8.         // 考虑到程序要频繁修改字符串,所以使用StringBuffer提升性能  
  9.         StringBuffer buf = new StringBuffer() ;  
  10.         buf.append(calendar.get(Calendar.YEAR)).append("-") ;   // 增加年  
  11.         buf.append(this.addZero(calendar.get(Calendar.MONTH)+1,2)).append("-") ;    // 增加月  
  12.         buf.append(this.addZero(calendar.get(Calendar.DAY_OF_MONTH),2)).append(" ") ;   // 取得日  
  13.         buf.append(this.addZero(calendar.get(Calendar.HOUR_OF_DAY),2)).append(":") ;    // 取得时  
  14.         buf.append(this.addZero(calendar.get(Calendar.MINUTE),2)).append(":") ;  
  15.         buf.append(this.addZero(calendar.get(Calendar.SECOND),2)).append(".") ;  
  16.         buf.append(this.addZero(calendar.get(Calendar.MILLISECOND),3)) ;  
  17.         return buf.toString() ;  
  18.     }  
  19.     public String getDateComplete(){        // 得到的是一个日期:格式为:yyyy年MM月dd日 HH时mm分ss秒SSS毫秒  
  20.         // 考虑到程序要频繁修改字符串,所以使用StringBuffer提升性能  
  21.         StringBuffer buf = new StringBuffer() ;  
  22.         buf.append(calendar.get(Calendar.YEAR)).append("年") ;   // 增加年  
  23.         buf.append(this.addZero(calendar.get(Calendar.MONTH)+1,2)).append("月") ;    // 增加月  
  24.         buf.append(this.addZero(calendar.get(Calendar.DAY_OF_MONTH),2)).append("日") ;   // 取得日  
  25.         buf.append(this.addZero(calendar.get(Calendar.HOUR_OF_DAY),2)).append("时") ;    // 取得时  
  26.         buf.append(this.addZero(calendar.get(Calendar.MINUTE),2)).append("分") ;     // 取得分  
  27.         buf.append(this.addZero(calendar.get(Calendar.SECOND),2)).append("秒") ;     // 取得秒  
  28.         buf.append(this.addZero(calendar.get(Calendar.MILLISECOND),3)).append("毫秒") ;    // 取得毫秒  
  29.         return buf.toString() ;  
  30.     }  
  31.     public String getTimeStamp(){       // 得到的是一个时间戳  
  32.         // 考虑到程序要频繁修改字符串,所以使用StringBuffer提升性能  
  33.         StringBuffer buf = new StringBuffer() ;  
  34.         buf.append(calendar.get(Calendar.YEAR)) ;   // 增加年  
  35.         buf.append(this.addZero(calendar.get(Calendar.MONTH)+1,2)) ;    // 增加月  
  36.         buf.append(this.addZero(calendar.get(Calendar.DAY_OF_MONTH),2)) ;   // 取得日  
  37.         buf.append(this.addZero(calendar.get(Calendar.HOUR_OF_DAY),2)) ;    // 取得时  
  38.         buf.append(this.addZero(calendar.get(Calendar.MINUTE),2)) ;     // 取得分  
  39.         buf.append(this.addZero(calendar.get(Calendar.SECOND),2));      // 取得秒  
  40.         buf.append(this.addZero(calendar.get(Calendar.MILLISECOND),3)) ;     // 取得毫秒  
  41.         return buf.toString() ;  
  42.     }  
  43.     // 考虑到日期中存在前导0,所以在此处加上补零的方法  
  44.     private String addZero(int num,int len){  
  45.         StringBuffer s = new StringBuffer() ;  
  46.         s.append(num) ;  
  47.         while(s.length()<len){   // 如果长度不足,则继续补0  
  48.             s.insert(0,"0") ;   // 在第一个位置处补0  
  49.         }  
  50.         return s.toString() ;  
  51.     }  
  52. };  
  53. public class DateDemo06{  
  54.     public static void main(String args[]){  
  55.         DateTime dt = new DateTime() ;  
  56.         System.out.println("系统日期:"+dt.getDate()) ;  
  57.         System.out.println("中文日期:"+dt.getDateComplete()) ;  
  58.         System.out.println("时间戳:"+dt.getTimeStamp()) ;  
  59.     }  
  60. };  
2.基于SimpleDate类操作

java.util.Date 已经就是一个完整的日期了,SimpleDateFormat 类中存在一个方法,可以针对于Date重新格式化,那么如果现在将一个表示当前日期的 date 对象通过 SimpleDateFormat 类指定好的模板进行相关的格式化操作的话,那么取得时间就非常的方便了。

[java]  view plain copy
  1. import java.util.* ;    // 导入需要的工具包  
  2. import java.text.* ;    // 导入SimpleDateFormat所在的包  
  3. class DateTime{     // 以后直接通过此类就可以取得日期时间  
  4.     private SimpleDateFormat sdf = null ;   // 声明SimpleDateFormat对象  
  5.     public String getDate(){        // 得到的是一个日期:格式为:yyyy-MM-dd HH:mm:ss.SSS  
  6.         this.sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS") ;  
  7.         return this.sdf.format(new Date()) ;// 将当前日期进行格式化操作  
  8.     }  
  9.     public String getDateComplete(){        // 得到的是一个日期:格式为:yyyy年MM月dd日 HH时mm分ss秒SSS毫秒  
  10.         this.sdf = new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒SSS毫秒") ;  
  11.         return this.sdf.format(new Date()) ;// 将当前日期进行格式化操作  
  12.     }  
  13.     public String getTimeStamp(){       // 得到的是一个时间戳  
  14.         this.sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS") ;  
  15.         return this.sdf.format(new Date()) ;// 将当前日期进行格式化操作  
  16.     }  
  17. };  
  18. public class DateDemo07{  
  19.     public static void main(String args[]){  
  20.         DateTime dt = new DateTime() ;  
  21.         System.out.println("系统日期:"+dt.getDate()) ;  
  22.         System.out.println("中文日期:"+dt.getDateComplete()) ;  
  23.         System.out.println("时间戳:"+dt.getTimeStamp()) ;  
  24.     }  
  25. };  

总结:

通过代码可以发现,直接使用SimpleDateFormat 类取得时间会比使用Calendar 类更方便,而且不用去增加补零操作,所以在开发中如果需要取得一个日期的话,则基本上都是使用 SimpleDateFormat 类进行操作,以上的操作代码为取得日期的一个简单做法。

实验题目 编写一个实现银行帐户的概念,包括的属性有“帐号”、“储户姓名”、“地址”、“存款余额”,包括的方法有“存款”、“取款”、“查询”、“计算利息”、“累加利息”等。 实验要求 改写上面的,增加一个的静态属性“最小余额”和一个用来修改这个最小余额属性的方法。 改写上面的,增加一个的静态属性“活期利率”和封装这个属性的相应方法。 程序模块 实验后的结果验证 总结体会 通过此次实验,我初步掌握了编写一个的概念,更进一步的熟悉了static等等与之用法相似的语法,增强了自己学好JAVA的信心。进一步掌握静态对象和非静态对象的区别与联系。 静态对象的数据在全局是唯一的,一改都改。如果你想要处理的东西是整个程序中唯一的,弄静态是个好方法。 非静态的东西你修改以后只是修改了他自己的数据,但是不会影响其他同对象的数据。 静态对象和非静态对象都是对象,是对象都是要实例化的。不同之处就是2者的数据表现和存储方式不一样。 静态的好处: 引用方便。对于公用型的变量,直接用 名.静态方法名 或者 名.静态变量名就可引用并且直接可以修改其属性值,不用getter和setter方法。 保持数据的唯一性。此数据全局都是唯一的,修改他的任何一处地方,在程序所有使用到的地方都将会体现到这些数据的修改。 有效减少多余的浪费。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值