Date日期的格式与处理

最近对Date日期应用的比较多,然而之前对于Date的理解还不够深刻,所以写这个文档来记录一下Date。

首先Date在java中有两个类中有,一个是 java.util.Date 另一个是 java.sql.Date。

我们一般用的是第一种。

import java.util.Date;
public class DateFormat {
        public static void main(String[] args)
        {
                Date currentDate=new Date();
                System.out.println("currentDate is" +currentDate);      
        }
}

显示结果currentDate isWed Jun 04 19:57:18 CST 2014

然而我们用


而月则需要加1因为是从0开始计算的。Date来直接取得时间时,年会从2014-》114( 用这个方法获取年份时是从1900年开始计算的,因此当年份为2014时,得到的结果为114,所以如果要得到最终的年份,要再加上1900。)



显然直接用Date不是很方便,所以我们可以采用一个SimpleDateFormat的一个类。

public class SimpleDateFormat extends DateFormat

SimpleDateFormat 是一个以国别敏感的方式格式化和分析数据的具体类。 它允许格式化 (date -> text)、语法分析 (text -> date)和标准化。

SimpleDateFormat 允许以为日期-时间格式化选择任何用户指定的方式启动。 但是,希望用 DateFormat 中的getTimeInstance、 getDateInstance 或 getDateTimeInstance 创建一个日期-时间格式化程序。 每个类方法返回一个以缺省格式化方式初始化的日期/时间格式化程序。 可以根据需要用 applyPattern 方法修改格式化方式。 

SimpleDateFormat函数的继承关系:
java.lang.Object
   |
   +----java.text.Format
           |
           +----java.text.DateFormat
                   |
                   +----java.text.SimpleDateFormat


public class DateFormat {
        public static void main(String[] args)
        {
                Date currentDate=new Date();
                SimpleDateFormat sdf=new SimpleDateFormat();
                String time=sdf.format(currentDate);
                System.out.println("currentDate is " +time);
                
                Date currentTime=new Date();
                SimpleDateFormat sdf1=new SimpleDateFormat("yyyy-mm-dd");
                String time2=sdf1.format(currentTime);
                System.out.println("currentDate is " +time2);                   
        }
}


运行结果 

currentDate is 14-6-4 下午8:10

currentDate is 2014-10-04

我们可以再新建一个simpleDateFormat的时候指定其格式,然后获取我们想要的日期格式。




但这样仅仅是解决了一个DateFormat的问题。

对于Date格式我们用得少了,更多的使用Calender


public class DateFormat {
        public static void main(String[] args) throws ParseException
        {
                SimpleDateFormat sdf=new SimpleDateFormat("yyyy-mm-dd");
                Calendar calendar=Calendar.getInstance();
                String time=sdf.format(calendar.getTime());
                
                System.out.println("currentDate is "+calendar.getTime());
                System.out.println("currentDate is "+calendar.get(Calendar.YEAR));
                System.out.println("currentDate is "+calendar.get(Calendar.MONTH));
                System.out.println("currentDate is "+calendar.get(Calendar.DATE));
                System.out.println("time is "+time);                            
        }

}

输出结果  

currentDate is Wed Jun 04 20:37:58 CST 2014

currentDate is 2014

currentDate is 5(输入的月份也需要加1)

currentDate is 4

time is 2014-37-04

月份是因为一月是0

如果有星期几的话需要减一,因为sunday是1,saturday是7


calender日期加减后赋值给Date类型 

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");   
String time=sdf.format(new Date());    
Calendar cd = Calendar.getInstance();   
  
try {   
    cd.setTime(sdf.parse(time));   
} catch (ParseException e) {               
    e.printStackTrace();   
}   
      cd.add(Calendar.DATE, 1);//增加一天        
       //cal.add(Calendar.DATE, -1);      //减一天    
       //cd.add(Calendar.MONTH, 1);//增加一月    
      Date date=cd.getTime();    
      System.out.println(sdf.format(date));


这是通过calendar来处理日期的增加减少。



总感觉这样对日期的处理也不是很好,我们选取了一个新的开源的Date处理库

Joda-Time

简介:

public class DateFormatshadow {
        public static void main(String[] args) throws ParseException
        {
                
                DateTime date=new DateTime();
                DateTimeFormatter dtf=DateTimeFormat.forPattern("yyyy-MM-dd");//这地方注意一定要大写MM
                DateTime time=dtf.parseDateTime("2014-05-23");
                //DateTime time=getDateTime("2011-05-22");
                System.out.println("  "+date.toString());
                System.out.println(" 年: "+date.getYear());
                System.out.println(" 月: "+date.getMonthOfYear());
                System.out.println(" 日: "+date.getDayOfMonth());
                System.out.println("  "+time.toString());
                System.out.print(time.plusDays(3).toString());
                
                
        }


}


输出结果 

  2014-06-04T21:31:36.112+08:00

 年: 2014

 月: 6

 日: 4

  2014-05-23T00:00:00.000+08:00

2014-05-26T00:00:00.000+08:00


这样就可以方便直接的对日期进行加减并且直接取得当前日期,并且继承之前可以用的方法。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值