`

获取java 处理时间的实现(具体代码)

阅读更多
资料整合:

(一).今天的日期,两天前的日期,三天后的日期
Date d=new Date();   
 SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");   
 System.out.println("今天的日期:"+df.format(d));   
 System.out.println("两天前的日期:" + df.format(new Date(d.getTime() - (long)2 * 24 * 60 * 60 * 1000)));  
   System.out.println("三天后的日期:" + df.format(new Date(d.getTime() + (long)3 * 24 * 60 * 60 * 1000)));


(二).JAVA处理日期时间常用方法:

1.java.util.Calendar
Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。

例:

Calendar cal = Calendar.getInstance();//使用默认时区和语言环境获得一个日历。    

cal.add(Calendar.DAY_OF_MONTH, -1);//取当前日期的前一天.    

cal.add(Calendar.DAY_OF_MONTH, +1);//取当前日期的后一天. 
  
//通过格式化输出日期    

java.text.SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy-MM-dd");    

System.out.println("Today is:"+format.format(Calendar.getInstance().getTime()));    

System.out.println("yesterday is:"+format.format(cal.getTime()));   

Calendar cal = Calendar.getInstance();//使用默认时区和语言环境获得一个日历。 
cal.add(Calendar.DAY_OF_MONTH, -1);//取当前日期的前一天. 
cal.add(Calendar.DAY_OF_MONTH, +1);//取当前日期的后一天. 

//通过格式化输出日期 
java.text.SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy-MM-dd"); System.out.println("Today is:"+format.format(Calendar.getInstance().getTime())); System.out.println("yesterday is:"+format.format(cal.getTime()));




得到2007-12-25日期:

Calendar calendar = new GregorianCalendar(2007, 11, 25,0,0,0);    
Date date = calendar.getTime();    

System.out.println("2007 Christmas is:"+format.format(date));   

Calendar calendar = new GregorianCalendar(2007, 11, 25,0,0,0); Date date = calendar.getTime(); System.out.println("2007 Christmas is:"+format.format(date));



java月份是从0-11,月份设置时要减1.

GregorianCalendar构造方法参数依次为:年,月-1,日,时,分,秒.

取日期的部分:


int year =calendar.get(Calendar.YEAR);    
int month=calendar.get(Calendar.MONTH)+1;

int day =calendar.get(Calendar.DAY_OF_MONTH);    

int hour =calendar.get(Calendar.HOUR_OF_DAY);    

int minute =calendar.get(Calendar.MINUTE);    

int seconds =calendar.get(Calendar.SECOND);   

int year =calendar.get(Calendar.YEAR); int month=calendar.get(Calendar.MONTH)+1; int day =calendar.get(Calendar.DAY_OF_MONTH); int hour =calendar.get(Calendar.HOUR_OF_DAY); int minute =calendar.get(Calendar.MINUTE); int seconds =calendar.get(Calendar.SECOND);




取月份要加1.

判断当前月份的最大天数:


Calendar cal = Calendar.getInstance();    

int day=cal.getActualMaximum(Calendar.DAY_OF_MONTH);    

System.out.println(day);   

Calendar cal = Calendar.getInstance(); int day=cal.getActualMaximum(Calendar.DAY_OF_MONTH); System.out.println(day);



2.java.util.Date


java.util.Date today=new java.util.Date();    

System.out.println("Today is "+formats.format(today));   

java.util.Date today=new java.util.Date(); System.out.println("Today is "+formats.format(today));



取当月的第一天:


java.text.SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy-MM-01");    

java.util.Date firstDay=new java.util.Date();    

System.out.println("the month first day is "+formats.format(firstDay));   

java.text.SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy-MM-01"); java.util.Date firstDay=new java.util.Date(); System.out.println("the month first day is "+formats.format(firstDay));



取当月的最后一天:

Calendar cal = Calendar.getInstance();    

int maxDay=cals.getActualMaximum(Calendar.DAY_OF_MONTH);    

java.text.Format formatter3=new java.text.SimpleDateFormat("yyyy-MM-"+maxDay);    

System.out.println(formatter3.format(cal.getTime()));   

 Calendar cal = Calendar.getInstance(); int maxDay=cals.getActualMaximum(Calendar.DAY_OF_MONTH); java.text.Format formatter3=new java.text.SimpleDateFormat("yyyy-MM-"+maxDay); System.out.println(formatter3.format(cal.getTime()));



求两个日期之间相隔的天数:

java.text.SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy-MM-dd");    

java.util.Date beginDate= format.parse("2007-12-24");    

java.util.Date endDate= format.parse("2007-12-25");    

long day=(date.getTime()-mydate.getTime())/(24*60*60*1000);    

System.out.println("相隔的天数="+day);   

java.text.SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy-MM-dd"); java.util.Date beginDate= format.parse("2007-12-24"); java.util.Date endDate= format.parse("2007-12-25"); long day=(date.getTime()-mydate.getTime())/(24*60*60*1000); System.out.println("相隔的天数="+day);




一年前的日期:

java.text.Format formatter=new java.text.SimpleDateFormat("yyyy-MM-dd");    

java.util.Date todayDate=new java.util.Date();    

long beforeTime=(todayDate.getTime()/1000)-60*60*24*365;    

todayDate.setTime(beforeTime*1000);    

String beforeDate=formatter.format(todayDate);    

System.out.println(beforeDate);   

java.text.Format formatter=new java.text.SimpleDateFormat("yyyy-MM-dd"); java.util.Date todayDate=new java.util.Date(); long beforeTime=(todayDate.getTime()/1000)-60*60*24*365; todayDate.setTime(beforeTime*1000); String beforeDate=formatter.format(todayDate); System.out.println(beforeDate);



一年后的日期:
java.text.Format formatter=new java.text.SimpleDateFormat("yyyy-MM-dd");    

java.util.Date todayDate=new java.util.Date();    

long afterTime=(todayDate.getTime()/1000)+60*60*24*365;    

todayDate.setTime(afterTime*1000);    

String afterDate=formatter.format(todayDate);    

System.out.println(afterDate);   

java.text.Format formatter=new java.text.SimpleDateFormat("yyyy-MM-dd"); java.util.Date todayDate=new java.util.Date(); long afterTime=(todayDate.getTime()/1000)+60*60*24*365; todayDate.setTime(afterTime*1000); String afterDate=formatter.format(todayDate); System.out.println(afterDate);




求10小时后的时间

java.util.Calendar Cal=java.util.Calendar.getInstance();    

Cal.setTime(dateOper);    

Cal.add(java.util.Calendar.HOUR_OF_DAY,10);    

System.out.println("date:"+forma.format(Cal.getTime()));   

java.util.Calendar Cal=java.util.Calendar.getInstance(); Cal.setTime(dateOper); Cal.add(java.util.Calendar.HOUR_OF_DAY,10); System.out.println("date:"+forma.format(Cal.getTime()));



求10小时前的时间
java.util.Calendar Cal=java.util.Calendar.getInstance();    

Cal.setTime(dateOper);    

Cal.add(java.util.Calendar.HOUR_OF_DAY,-10);    

System.out.println("date:"+forma.format(Cal.getTime()));   

java.util.Calendar Cal=java.util.Calendar.getInstance(); Cal.setTime(dateOper); Cal.add(java.util.Calendar.HOUR_OF_DAY,-10); System.out.println("date:"+forma.format(Cal.getTime()));


取得指定日期是星期几:
a、使用Calendar类
int weekDay = Calendar.getInstance().get(Calendar.DAY_OF_WEEK);
   public static String getWeek(Date date){  
        String[] weeks = {"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};  
        Calendar cal = Calendar.getInstance();  
        cal.setTime(date);  
        int week_index = cal.get(Calendar.DAY_OF_WEEK) - 1;  
        if(week_index<0){  
            week_index = 0;  
        }   
        return weeks[week_index];  
   }  

b、使用SimpleDateFormat类
01.//根据日期取得星期几  
   public static String getWeek(Date date){   
        SimpleDateFormat sdf = new SimpleDateFormat("EEEE");  
        String week = sdf.format(date);  
        return week;  
    }  


取得日期是某年的第几周
01.//取得日期是某年的第几周  
    public static int getWeekOfYear(Date date){  
        Calendar cal = Calendar.getInstance();  
        cal.setTime(date);  
        int week_of_year = cal.get(Calendar.WEEK_OF_YEAR);  
        return week_of_year;  
    }

3.java.sql.Date
继承自java.util.Date,是操作数据库用的日期类型


java.sql.Date sqlDate = new java.sql.Date(java.sql.Date.valueOf("2007-12-25").getTime());

java.sql.Date sqlDate = new java.sql.Date(java.sql.Date.valueOf("2007-12-25").getTime());



日期比较:简单的比较可以以字符串的形式直接比较,也可使用
java.sql.Date.valueOf("2007-03-08").compareTo(java.sql.Date.valueOf("2007-03-18"))方式来比较日期的大小.也可使用java.util.Date.after(java.util.Date)来比较.

相差时间:
long difference=c2.getTimeInMillis()-c1.getTimeInMillis();
相差天数:long day=difference/(3600*24*1000)
相差小时:long hour=difference/(3600*1000)
相差分钟:long minute=difference/(60*1000)
相差秒: long second=difference/1000

补充:


DateFormat df=new SimpleDateFormat("yyyy-MM-dd EE hh:mm:ss");    

System.out.println(df.format(new Date()));    

Date date = new Date();    

DateFormat shortDate=DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT);    

DateFormat mediumDate =DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM);    

DateFormat longDate =DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG);    

DateFormat fullDate =DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL);    

  

system.out.println(shortDate.format(date));    

System.out.println(mediumDate.format(date));    

System.out.println(longDate.format(date));    

System.out.println(fullDate.format(date));    
 

08-4-15 下午3:24   

2008-4-15 15:24:31   

2008年4月15日 下午03时24分31秒   

2008年4月15日 星期二 下午03时24分31秒CST   



Calendar c = Calendar.getInstance();

c.add(Calendar.MONTH, 1); // 目前時間加1個月   

System.out.println(df.format(c.getTime()));   

c.add(Calendar.HOUR, 3); // 目前時間加3小時   

System.out.println(df.format(c.getTime()));   

c.add(Calendar.YEAR, -2); // 目前時間減2年   

System.out.println(df.format(c.getTime()));

c.add(Calendar.DAY_OF_WEEK, 7); // 目前的時間加7天   

System.out.println(df.format(c.getTime()));  


资料来自互联网,自己整合;
分享到:
评论

相关推荐

    Java进制/时间/日期/字符串/流算法大全

    JAVA 时间格式化处理 将毫秒转化为日期 文本的倒序输出 判断一个数字是奇数还是偶数 用Hibernate 实现分页 35 选7 彩票程序 获取GMT8 时间 中文乱码转换 Big5 字与Unicode 的互换 取得服务器当前的各种具体时间 用...

    java常用工具类的使用

    接下来主要学习Java对日期时间的格式化和对数字的格式化处理。  日期时间格式化 Date类中包含了日期和时间,在Java编程中,日期通常指年、月、日,时间则指时、分、秒、毫秒。Java对Date进行格式化使用java.text...

    Android开发应用实战详解源代码

    4.1 实现文本处理 4.2 将背景图片作为按钮 4.3 用toast实现提示 4.4 用checkbox实现一个简单的物品清单 4.5 实现同意条款效果 4.6 radiogroup选择 4.7 imageview相框 4.8 spinner选择处理 4.9 gallery相簿 4.10 用....

    JAVA面试题最全集

    50.JAVA语言如何进行异常处理,关键字:thorws,throw,try,catch,finally 51.Object类(或者其子类)的finalize()方法在什么情况下被调用? 52.一个“.java”原文件中是否可以包括多个类(不是内部类)? 53.掌握...

    java 算法

    JAVA时间格式化处理 ,将毫秒转化为日期, 文本的倒序输出 ,判断一个数字是奇数还是偶数 ,用Hibernate实现分页, 35选7彩票程序 ,获取GMT8时间, 中文乱码转换 ,小标签 ,Big5字与Unicode的互换, 取得服务器...

    java 面试题 总结

    但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地...

    java面试题

    65. 什么是java序列化,如何实现java序列化? 48 65.1. java序列化、反序列化 48 65.2. 对象的序列化主要有两种用途: 48 65.3. 对象序列化包括如下步骤: 49 65.4. 对象反序列化的步骤如下: 49 66. 反射机制 49 ...

    Java并发编程(学习笔记).xmind

    (4)用户界面具备更短的响应时间:现代GUI框架中大都使用一个事件分发线程(类似于中断响应函数)来替代主事件循环,当用户界面用有事件发生时,在事件线程中将调用对应的事件处理函数(类似于中断处理函数) ...

    超爽的自学课件(java)

    在这一章中,大家将学习在Java中重复使用代码的这两种方法,以及具体如何运用。 &lt;br&gt;(7) 第7章:多形性 若由你自己来干,可能要花9个月的时间才能发现和理解多形性的问题,这一特性实际是OOP一个重要的基础。...

    Java超级万年历课程设计.doc

    本实验是对图形用户界面,布局管理器的综合运用,理解JAVA的时间处理机制,编写 独立运行的窗口。 2.2概要设计 本程序涉及三个类,MainFrame为显示日期部分的类,是程序中的主类,ClockActio n 是对所要查询的年份...

    超级有影响力霸气的Java面试题大全文档

    但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地...

    java web开发技术大全

    《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax+》讲解了JSP/S rvlet技术的基础知识,并提供了一个综合案例展示其具体应用,它们是Java Web服务端技术的基石,也是学习Java Web开发所要必须掌握...

    计算机程序设计(Java)-教案--单元十--数据库编程技术.docx.docx

    【实例10.2:实现数据库的查询操作】 【实例10-3:实现数据库的插入操作】 【实例10-4:实现数据库的修改操作】 【实例10-5:实现数据库的删除操作】 (实例代码详见教材) 计算机程序设计(Java)-教案--单元十--数据库...

    java 常用设计模式chm

    (1)如果那个对象是一个是很大的图片,需要花费很长时间才能显示出来,那么当这个图片包含在文档中时,使用编辑器或浏览器打开这个文档,打开文档必须很迅速,不能等待大图片处理完成,这时需要做个图片Proxy来代替真正的...

    java web技术开发大全(最全最新)

    《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax+》讲解了JSP/S rvlet技术的基础知识,并提供了一个综合案例展示其具体应用,它们是Java Web服务端技术的基石,也是学习Java Web开发所要必须掌握...

    Java经典入门教程pdf完整版

    写完Jaa代码后,机器并不认识我们写的Java代码,需要进行编译成为字节码,编译 后的文件叫做clas文件。如上图所示的 Hello, class文件。 3:类装载 Classloader 类裝载的功能是为执行程序寻找和装载所需要的类 ...

    java设计模式选择题复习题.doc

    行为型特点:怎样合理的设计对象之间的交互通信,以及怎样合理的为对象分配职 结构型特点:主要用于处理类或对象的组合 Java jdk中使用了哪些设计模式 1.单例2.静态工厂3.工厂方法4.抽象工厂5.构造者6.原型7.适配器...

    Java之IO流学习总结

    File类保存文件或目录的各种元数据信息,包括文件名、文件长度、最后修改时间、是否可读、获取当前文件的路径名,判断指定文件是否存在、获得当前目录中的文件列表,创建、删除文件和目录等方法。 9....

Global site tag (gtag.js) - Google Analytics