`
Sanny
  • 浏览: 26484 次
  • 性别: Icon_minigender_2
社区版块
存档分类
最新评论

[转]关于java日期的小结

    博客分类:
  • Java
阅读更多

1.计算某一月份的最大天数

Calendar   time=Calendar.getInstance();
time.clear();
time.set(Calendar.YEAR,year);   //year   为   int  
time.set(Calendar.MONTH,i-1);//注意,Calendar对象默认一月为0                      
int   day=time.getActualMaximum(Calendar.DAY_OF_MONTH);//本月份的天数
注:在使用set方法之前,必须先clear一下,否则很多信息会继承自系统当前时间

2.Calendar和Date的转化

(1)   Calendar转化为Date
Calendar   cal=Calendar.getInstance();
Date   date=cal.getTime();

(2)   Date转化为Calendar
Date   date=new   Date();
Calendar   cal=Calendar.getInstance();
cal.setTime(date);

3.格式化输出日期时间   (这个用的比较多)

Date   date=new   Date();
SimpleDateFormat   df=new   SimpleDateFormat("yyyy-MM-dd   hh:mm:ss");
String   time=df.format(date);
System.out.println(time);

4.计算一年中的第几星期

(1)计算某一天是一年中的第几星期
Calendar   cal=Calendar.getInstance();
cal.set(Calendar.YEAR,   2006);
cal.set(Calendar.MONTH,  ;
cal.set(Calendar.DAY_OF_MONTH,   3);
int   weekno=cal.get(Calendar.WEEK_OF_YEAR);

(2)计算一年中的第几星期是几号
SimpleDateFormat   df=new   SimpleDateFormat("yyyy-MM-dd");
Calendar   cal=Calendar.getInstance();
cal.set(Calendar.YEAR,   2006);
cal.set(Calendar.WEEK_OF_YEAR,   1);
cal.set(Calendar.DAY_OF_WEEK,   Calendar.MONDAY);
System.out.println(df.format(cal.getTime()));
输出:
2006-01-02

5.add()和roll()的用法(不太常用)

(1)add()方法
SimpleDateFormat   df=new   SimpleDateFormat("yyyy-MM-dd");
Calendar   cal=Calendar.getInstance();
cal.set(Calendar.YEAR,   2006);
cal.set(Calendar.MONTH,  ;
cal.set(Calendar.DAY_OF_MONTH,   3);
cal.add(Calendar.DATE,   -4);
Date   date=cal.getTime();
System.out.println(df.format(date));
cal.add(Calendar.DATE,   4);
date=cal.getTime();
System.out.println(df.format(date));
输出:
        2006-08-30
        2006-09-03
(2)roll方法
cal.set(Calendar.YEAR,   2006);
cal.set(Calendar.MONTH,  ;
cal.set(Calendar.DAY_OF_MONTH,   3);
cal.roll(Calendar.DATE,   -4);
date=cal.getTime();
System.out.println(df.format(date));
cal.roll(Calendar.DATE,   4);
date=cal.getTime();
System.out.println(df.format(date));
输出:
        2006-09-29
        2006-09-03
可见,roll()方法在本月内循环,一般使用add()方法;

6.计算两个任意时间中间的间隔天数(这个比较常用)
(1)传进Calendar对象
        public   int   getIntervalDays(Calendar   startday,Calendar   endday)...{              
                if(startday.after(endday))...{
                        Calendar   cal=startday;
                        startday=endday;
                        endday=cal;
                }        
                long   sl=startday.getTimeInMillis();
                long   el=endday.getTimeInMillis();
             
                long   ei=el-sl;                      
                return   (int)(ei/(1000*60*60*24));
        }
(2)传进Date对象

        public   int   getIntervalDays(Date   startday,Date   endday)...{                
                if(startday.after(endday))...{
                        Date   cal=startday;
                        startday=endday;
                        endday=cal;
                }                
                long   sl=startday.getTime();
                long   el=endday.getTime();              
                long   ei=el-sl;                      
                return   (int)(ei/(1000*60*60*24));
        }
(3)改进精确计算相隔天数的方法
        public   int   getDaysBetween   (Calendar   d1,   Calendar   d2)   ...{
                if   (d1.after(d2))   ...{  
                        java.util.Calendar   swap   =   d1;
                        d1   =   d2;
                        d2   =   swap;
                }
                int   days   =   d2.get(Calendar.DAY_OF_YEAR)   -   d1.get(Calendar.DAY_OF_YEAR);
                int   y2   =   d2.get(Calendar.YEAR);
                if   (d1.get(Calendar.YEAR)   !=   y2)   ...{
                        d1   =   (Calendar)   d1.clone();
                        do   ...{
                                days   +=   d1.getActualMaximum(Calendar.DAY_OF_YEAR);//得到当年的实际天数
                                d1.add(Calendar.YEAR,   1);
                        }   while   (d1.get(Calendar.YEAR)   !=   y2);
                }
                return   days;
        }
注意:通过上面的方法可以衍生出求任何时间,如要查出邮箱三周之内收到的邮件(得到当前系统时间-再得到三周前时间)用收件的时间去匹配   最好装化成   long去比较
如:1年前日期(注意毫秒的转换)
      java.util.Date   myDate=new   java.util.Date();
      long   myTime=(myDate.getTime()/1000)-60*60*24*365;
      myDate.setTime(myTime*1000);
      String   mDate=formatter.format(myDate);

7.   String   和   Date   ,Long   之间相互转换   (最常用)

字符串转化成时间类型(字符串可以是任意类型,只要和SimpleDateFormat中的格式一致即可)
通常我们取时间跨度的时候,会substring出具体时间--long-比较

java.text.SimpleDateFormat   sdf   =   new   java.text.SimpleDateFormat("M/dd/yyyy   hh:mm:ss   a",java.util.Locale.US);
java.util.Date   d   =   sdf.parse("5/13/2003   10:31:37   AM");
long   dvalue=d.getTime();
SimpleDateFormat   formatter   =   new   SimpleDateFormat("yyyy-MM-dd   HH:mm:ss");
String   mDateTime1=formatter.format(d);

8.   通过时间求时间

年月周求日期
SimpleDateFormat   formatter2   =   new   SimpleDateFormat("yyyy-MM   F   E");
java.util.Date   date2=   formatter2.parse("2003-05   5   星期五");
SimpleDateFormat   formatter3   =   new   SimpleDateFormat("yyyy-MM-dd");
String   mydate2=formatter3.format(date2);

求是星期几
mydate=   myFormatter.parse("2001-1-1");
SimpleDateFormat   formatter4   =   new   SimpleDateFormat("E");
String   mydate3=formatter4.format(mydate);

9.   java   和   具体的数据库结合

在开发web应用中,针对不同的数据库日期类型,我们需要在我们的程序中对日期类型做各种不同的转换。若对应数据库数据是oracle的Date类型,即只需要年月日的,可以选择使用java.sql.Date类型,若对应的是MSsqlserver   数据库的DateTime类型,即需要年月日时分秒的,选择java.sql.Timestamp类型
你可以使用dateFormat定义时间日期的格式,转一个字符串即可

class   Datetest{
*method   将字符串类型的日期转换为一个timestamp(时间戳记java.sql.Timestamp)
*@param   dateString   需要转换为timestamp的字符串
*@return   dataTime   timestamp

public   final   static   java.sql.Timestamp   string2Time(String   dateString)
throws   java.text.ParseException   {
DateFormat   dateFormat;
dateFormat   =   new   SimpleDateFormat("yyyy-MM-dd   kk:mm:ss.SSS",   Locale.ENGLISH);//设定格式
//dateFormat   =   new   SimpleDateFormat("yyyy-MM-dd   kk:mm:ss",   Locale.ENGLISH);
dateFormat.setLenient(false);
java.util.Date   timeDate   =   dateFormat.parse(dateString);//util类型
java.sql.Timestamp   dateTime   =   new   java.sql.Timestamp(timeDate.getTime());//Timestamp类型,timeDate.getTime()返回一个long型
return   dateTime;
}

*method   将字符串类型的日期转换为一个Date(java.sql.Date)
*@param   dateString   需要转换为Date的字符串
*@return   dataTime   Date

public   final   static   java.sql.Date   string2Date(String   dateString)
throws   java.lang.Exception   {
DateFormat   dateFormat;
dateFormat   =   new   SimpleDateFormat("yyyy-MM-dd",   Locale.ENGLISH);
dateFormat.setLenient(false);
java.util.Date   timeDate   =   dateFormat.parse(dateString);//util类型
java.sql.Date   dateTime   =   new   java.sql.Date(timeDate.getTime());//sql类型
return   dateTime;
}

public   static   void   main(String[]   args){
Date   da   =   new   Date();
注意:这个地方da.getTime()得到的是一个long型的值
System.out.println(da.getTime());

由日期date转换为timestamp

第一种方法:使用new   Timestamp(long)
Timestamp   t   =   new   Timestamp(new   Date().getTime());
System.out.println(t);

第二种方法:使用Timestamp(int   year,int   month,int   date,int   hour,int   minute,int   second,int   nano)
Timestamp   tt   =   new   Timestamp(Calendar.getInstance().get(
            Calendar.YEAR)   -   1900,   Calendar.getInstance().get(
            Calendar.MONTH),   Calendar.getInstance().get(
            Calendar.DATE),   Calendar.getInstance().get(
            Calendar.HOUR),   Calendar.getInstance().get(
            Calendar.MINUTE),   Calendar.getInstance().get(
            Calendar.SECOND),   0);
System.out.println(tt);

try   {
String   sToDate   =   "2005-8-18";//用于转换成java.sql.Date的字符串
            String   sToTimestamp   =   "2005-8-18   14:21:12.123";//用于转换成java.sql.Timestamp的字符串
            Date   date1   =   string2Date(sToDate);
            Timestamp   date2   =   string2Time(sToTimestamp);
System.out.println("Date:"+date1.toString());//结果显示
System.out.println("Timestamp:"+date2.toString());//结果显示
}catch(Exception   e)   {
e.printStackTrace();
}
}
}  

 

转载说明:

转自:http://book.group.iteye.com/group/blog/181841

总结得很好,可以备用于以后查阅

分享到:
评论

相关推荐

    JAVA日期判断方法小结

    "JAVA日期判断方法小结" 在JAVA语言中,日期判断是非常重要的一部分,以下是常见的日期判断方法的总结: 1. 判断某年是否为润年 判断某年是否为润年是日期判断的基本方法之一。该方法可以使用以下代码实现: ```...

    java日期处理小结

    本篇文章主要总结了Java中关于日期处理的基础知识,包括`java.util.Calendar`,`java.util.GregorianCalendar`以及`java.util.Date`这三个核心类。 首先,我们来看`java.util.Date`类。`Date`类是用于表示特定瞬间...

    Java 获取日期时间代码

    本文将详细介绍几种常用的Java日期时间获取方法,包括如何获取完整日期时间、仅获取时间部分(时分秒)、获取日期部分以及如何获取时间戳。此外,我们还将探讨如何使用自定义格式来获取日期时间。 #### 二、基本...

    java根据日期计算年龄和星期

    #### 三、小结 以上就是Java中根据日期计算年龄以及确定星期的几种方法。通过`SimpleDateFormat`可以格式化日期,而`Calendar`类则提供了丰富的日期和时间操作接口。掌握这些基础知识,能够帮助开发者更高效地进行...

    常用的java日期比较和日期计算方法小结

    在Java编程中,日期处理是常见的任务之一,无论是记录日志、数据分析还是业务逻辑,都需要对日期进行比较和计算。本篇文章将详细讲解如何在Java中进行日期的比较和计算,主要包括日期的大小比较、计算两个日期之间的...

    Java中Date和Calendar日期处理

    关于java中date和Calendar日期处理小结,包含一些常用方法等

    Java8 LocalDateTime极简时间日期操作小结

    Java8 LocalDateTime 时间日期操作小结 Java8 LocalDateTime 时间日期操作小结是 Java8 中提供的一种新的时间处理方式,它提供了 LocalDateTime 和 LocalDate 两个类来处理日期和时间。LocalDateTime 可以很方便的...

    java中格式化日期

    根据提供的标题、描述以及部分代码内容,我们可以总结出关于Java中日期格式化的几个关键知识点。 ### Java中的日期格式化 #### 1. **基础知识** 在Java中,处理日期和时间通常涉及以下几个类: - `java.util.Date...

    实验5 JAVA常用类.doc

    - **Date** 类用于表示日期和时间,`SimpleDateFormat` 可以格式化日期和时间的输出。 - **Math** 类提供了数学运算函数,如 `sqrt()`(平方根)、`random()`(随机数)和 `max()`(最大值)等。 - **PrintWriter...

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    3.4 小结:基本数据类型—— Java中一切数据和运算的基础 63 3.5 习题 65 第4章 Java中的程序执行流程 67 教学视频:1小时57分钟 4.1 顺序执行 67 4.2 使用if-else让程序懂得判断 68 4.2.1 if语句 68 4.2.2 ...

    java获取list中两元素时间差

    小结 本例中,我们学习了如何在 Java 中获取 List 中两元素时间差。我们使用了 ArrayList 来存储时间字段,并使用 SimpleDateFormat 来格式化时间字段。同时,我们还学习了如何使用 Java 代码来实现时间差异的计算...

    calendar的用法小结

    Java 中 Calendar 类的用法小结 Calendar 类是 Java 语言中一个基本而重要的组成部分,用于处理日期和时间。下面是 Calendar 类的用法小结: 一、取得当前时间 使用 Calendar.getInstance() 方法可以取得当前时间...

    疯狂JAVA讲义

    1.9 本章小结 22 本章练习 22 第2章 理解面向对象 23 2.1 面向对象 24 2.1.1 结构化程序设计简介 24 2.1.2 程序的三种基本结构 25 2.1.3 面向对象程序设计简介 27 2.1.4 面向对象的基本特征 28 2.2 UML...

    JAVA中获得本地系统时间的方法

    #### 小结 以上介绍了两种在Java中获取本地系统时间的方法。通过`Calendar`类可以直接获取各种日期时间组件,而通过`SimpleDateFormat`类则可以方便地将日期时间对象转换为字符串。根据实际应用场景选择合适的方法...

    java关于时间的用法汇总

    #### 小结 以上方法展示了如何使用Java中的`Calendar`类来获取和格式化日期时间。通过不同的格式化方法,可以满足不同业务场景的需求。此外,还可以利用`SimpleDateFormat`等类来实现更多样化的日期时间格式转换。...

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    3.4 小结:基本数据类型—— Java中一切数据和运算的基础 63 3.5 习题 65 第4章 Java中的程序执行流程 67 教学视频:1小时57分钟 4.1 顺序执行 67 4.2 使用if-else让程序懂得判断 68 4.2.1 if语句 68 4.2.2 ...

    (超赞)JAVA精华之--深入JAVA API

    - **小结** - Java 的 I/O 包提供了丰富的类来处理文件和流,包括基本的字节流、字符流、文件流、缓冲流等。 **1.4 Java中的一些常用词汇** - **术语解释** - 如继承、封装、多态等。 **1.5 J2SE学习中的30个...

    java 获得时间方法

    ### 小结 通过上述示例可以看出,使用`Calendar`类获取时间是非常灵活和方便的。无论是需要获取精确到秒的时间戳还是只需要年月日这样的基本信息,都可以轻松实现。这对于日常开发中处理日期相关的功能非常有帮助。...

    Java高级面试题小结

    "Java高级面试题小结" 本文主要介绍了Java高级面试题,包括对部分名词的释义及代码解析,具有一定收藏价值,需要的朋友可以参考下。以下是对标题和描述中所说的知识点的详细解释: 一、可变参数 可变参数允许调用...

Global site tag (gtag.js) - Google Analytics