日期格式化的那些事儿

         在程序中我们经常会将某一个时间戳存储到数据库,或者将数据库中的时间戳取出格式化成某种显示格式,或者是计算两个日期之间的相隔天数……下面小编就将最近整理的关于日期格式化小插曲分享给大家;

       小编经常用到的主要是Date(java.util.Date)和DateTime(org.joda.time.DateTime)两种:

1.获取当前时间戳

         Date now = new Date();

         DateTime now= DateTime.now();

2.格式化

        DateFormat dateFormat = DateFormat.getDateInstance();或者 SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd");

        String str2 = dateFormat.format(now); 或者  String str2 = sdf3.format(now);

3.计算相隔天数

public static int daysBetween(String smdate,String bdate) throws ParseException, Exception{  
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");  
        Calendar cal = Calendar.getInstance();    
        cal.setTime(sdf.parse(smdate));    
        long time1 = cal.getTimeInMillis();                 
        cal.setTime(sdf.parse(bdate));    
        long time2 = cal.getTimeInMillis();         
        long between_days=(time2-time1)/(1000*3600*24);  
            
       return Integer.parseInt(String.valueOf(between_days));     
}

4.使用DateTime类计算N天之后的零点

    DateTime dateTime = DateTime.now().dayOfYear().addToCopy(N).withMillisOfDay(0);

    DateTime格式化大全:http://blog.csdn.net/liuxingbin/article/details/6170817

5.日期格式化的小插曲

     在上面的2中,两种格式化方式实例如下:

public static void main(String[] args) throws ParseException, Exception {
	Date now = new Date();
	DateFormat dateFormat = DateFormat.getDateInstance();
	String str2 = dateFormat.format(now);
	System.out.println("使用dateFormat格式化之后的日期为:" + str2);
	
	SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd");
	String str3 = sdf3.format(now);
	System.out.println("使用SimpleDateFormat格式化之后的日期为:" + str3);
}
  执行的结果为:

       细心的朋友会发现,两种格式化之后的日期不一样,SimpleDateFormat 默认格式化的样式为“yyyy-MM-dd”,而DateFormat 默认格式化的样式为“yyyy-M-dd”,虽然结果不一样,但是在Windows系统中,不会有任何问题,但是在服务器的Linux系统中,两种不一样的格式调用daysBetween方法计算相隔天数时,直接提示:

java.text.ParseException: Unparseable date: "Feb 21, 2017"
	at java.text.DateFormat.parse(DateFormat.java:357)
	at com.youxinpai.changzheng.guide.service.SuperSaleApplicationServicev10.impl.SuperSaleApplicationServiceImpl.daysBetween(SuperSaleApplicationServiceImpl.java:245)
	at com.youxinpai.changzheng.guide.service.SuperSaleApplicationServicev10.impl.SuperSaleApplicationServiceImpl.getApplicationStatus(SuperSaleApplicationServiceImpl.java:200)
     所以使用日期格式化要注意保持格式化方法的一致性;

     但是我们在项目中还是尽可能少的使用 simpleDateFormat 类,因为它的性能问题太值得重视了:simpleDateFormat的性能问题

     以上就是小编在开发中涉及到的日期类的相关知识,希望能帮大家少走弯路;





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值