`
tianlovv
  • 浏览: 14861 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

常用java date 方法集合

    博客分类:
  • java
阅读更多
Java代码 复制代码
  1. 计算某一月份的最大天数   
  2.   
  3. Calendar time=Calendar.getInstance();   
  4. time.clear();   
  5. time.set(Calendar.YEAR,year); //year 为 int   
  6. time.set(Calendar.MONTH,i-1);//注意,Calendar对象默认一月为0             
  7. int day=time.getActualMaximum(Calendar.DAY_OF_MONTH);//本月份的天数   
  8. 注:在使用set方法之前,必须先clear一下,否则很多信息会继承自系统当前时间   
  9.   
  10. 2.Calendar和Date的转化   
  11.   
  12. (1) Calendar转化为Date   
  13. Calendar cal=Calendar.getInstance();   
  14. Date date=cal.getTime();   
  15.   
  16. (2) Date转化为Calendar   
  17. Date date=new Date();   
  18. Calendar cal=Calendar.getInstance();   
  19. cal.setTime(date);   
  20.   
  21. 3.格式化输出日期时间 (这个用的比较多)   
  22.   
  23. Date date=new Date();   
  24. SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");   
  25. String time=df.format(date);   
  26. System.out.println(time);   
  27.   
  28. 4.计算一年中的第几星期   
  29.   
  30. (1)计算某一天是一年中的第几星期   
  31. Calendar cal=Calendar.getInstance();   
  32. cal.set(Calendar.YEAR, 2006);   
  33. cal.set(Calendar.MONTH, 8);   
  34. cal.set(Calendar.DAY_OF_MONTH, 3);   
  35. int weekno=cal.get(Calendar.WEEK_OF_YEAR);   
  36.   
  37. (2)计算一年中的第几星期是几号   
  38. SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");   
  39. Calendar cal=Calendar.getInstance();   
  40. cal.set(Calendar.YEAR, 2006);   
  41. cal.set(Calendar.WEEK_OF_YEAR, 1);   
  42. cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);   
  43. System.out.println(df.format(cal.getTime()));   
  44. 输出:   
  45. 2006-01-02  
  46.   
  47. 5.add()和roll()的用法(不太常用)   
  48.   
  49. (1)add()方法   
  50. SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");   
  51. Calendar cal=Calendar.getInstance();   
  52. cal.set(Calendar.YEAR, 2006);   
  53. cal.set(Calendar.MONTH, 8);   
  54. cal.set(Calendar.DAY_OF_MONTH, 3);   
  55. cal.add(Calendar.DATE, -4);   
  56. Date date=cal.getTime();   
  57. System.out.println(df.format(date));   
  58. cal.add(Calendar.DATE, 4);   
  59. date=cal.getTime();   
  60. System.out.println(df.format(date));   
  61. 输出:   
  62.     2006-08-30  
  63.     2006-09-03  
  64. (2)roll方法   
  65. cal.set(Calendar.YEAR, 2006);   
  66. cal.set(Calendar.MONTH, 8);   
  67. cal.set(Calendar.DAY_OF_MONTH, 3);   
  68. cal.roll(Calendar.DATE, -4);   
  69. date=cal.getTime();   
  70. System.out.println(df.format(date));   
  71. cal.roll(Calendar.DATE, 4);   
  72. date=cal.getTime();   
  73. System.out.println(df.format(date));   
  74. 输出:   
  75.     2006-09-29  
  76.     2006-09-03  
  77. 可见,roll()方法在本月内循环,一般使用add()方法;   
  78.   
  79. 6.计算两个任意时间中间的间隔天数(这个比较常用)   
  80. (1)传进Calendar对象   
  81.     public int getIntervalDays(Calendar startday,Calendar endday)...{         
  82.         if(startday.after(endday))...{   
  83.             Calendar cal=startday;   
  84.             startday=endday;   
  85.             endday=cal;   
  86.         }      
  87.         long sl=startday.getTimeInMillis();   
  88.         long el=endday.getTimeInMillis();   
  89.          
  90.         long ei=el-sl;             
  91.         return (int)(ei/(1000*60*60*24));   
  92.     }   
  93. (2)传进Date对象   
  94.   
  95.     public int getIntervalDays(Date startday,Date endday)...{          
  96.         if(startday.after(endday))...{   
  97.             Date cal=startday;   
  98.             startday=endday;   
  99.             endday=cal;   
  100.         }          
  101.         long sl=startday.getTime();   
  102.         long el=endday.getTime();         
  103.         long ei=el-sl;             
  104.         return (int)(ei/(1000*60*60*24));   
  105.     }   
  106. (3)改进精确计算相隔天数的方法   
  107.     public int getDaysBetween (Calendar d1, Calendar d2) ...{   
  108.         if (d1.after(d2)) ...{   
  109.             java.util.Calendar swap = d1;   
  110.             d1 = d2;   
  111.             d2 = swap;   
  112.         }   
  113.         int days = d2.get(Calendar.DAY_OF_YEAR) - d1.get(Calendar.DAY_OF_YEAR);   
  114.         int y2 = d2.get(Calendar.YEAR);   
  115.         if (d1.get(Calendar.YEAR) != y2) ...{   
  116.             d1 = (Calendar) d1.clone();   
  117.             do ...{   
  118.                 days += d1.getActualMaximum(Calendar.DAY_OF_YEAR);//得到当年的实际天数   
  119.                 d1.add(Calendar.YEAR, 1);   
  120.             } while (d1.get(Calendar.YEAR) != y2);   
  121.         }   
  122.         return days;   
  123.     }   
  124. 注意:通过上面的方法可以衍生出求任何时间,如要查出邮箱三周之内收到的邮件(得到当前系统时间-再得到三周前时间)用收件的时间去匹配 最好装化成 long去比较   
  125. 如:1年前日期(注意毫秒的转换)   
  126.    java.util.Date myDate=new java.util.Date();   
  127.    long myTime=(myDate.getTime()/1000)-60*60*24*365;   
  128.    myDate.setTime(myTime*1000);   
  129.    String mDate=formatter.format(myDate);   
  130.   
  131. 7. String 和 Date ,Long 之间相互转换 (最常用)   
  132.   
  133. 字符串转化成时间类型(字符串可以是任意类型,只要和SimpleDateFormat中的格式一致即可)   
  134. 通常我们取时间跨度的时候,会substring出具体时间--long-比较   
  135.   
  136. java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("M/dd/yyyy hh:mm:ss a",java.util.Locale.US);   
  137. java.util.Date d = sdf.parse("5/13/2003 10:31:37 AM");   
  138. long dvalue=d.getTime();   
  139. SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");   
  140. String mDateTime1=formatter.format(d);   
  141.   
  142. 8. 通过时间求时间   
  143.   
  144. 年月周求日期   
  145. SimpleDateFormat formatter2 = new SimpleDateFormat("yyyy-MM F E");   
  146. java.util.Date date2= formatter2.parse("2003-05 5 星期五");   
  147. SimpleDateFormat formatter3 = new SimpleDateFormat("yyyy-MM-dd");   
  148. String mydate2=formatter3.format(date2);   
  149.   
  150. 求是星期几   
  151. mydate= myFormatter.parse("2001-1-1");   
  152. SimpleDateFormat formatter4 = new SimpleDateFormat("E");   
  153. String mydate3=formatter4.format(mydate);   
  154.   
  155. 9. java 和 具体的数据库结合   
  156.   
  157. 在开发web应用中,针对不同的数据库日期类型,我们需要在我们的程序中对日期类型做各种不同的转换。若对应数据库数据是oracle的Date类型,即只需要年月日的,可以选择使用java.sql.Date类型,若对应的是MSsqlserver 数据库的DateTime类型,即需要年月日时分秒的,选择java.sql.Timestamp类型   
  158. 你可以使用dateFormat定义时间日期的格式,转一个字符串即可   
  159.   
  160. class Datetest{   
  161. *method 将字符串类型的日期转换为一个timestamp(时间戳记java.sql.Timestamp)   
  162. *@param dateString 需要转换为timestamp的字符串   
  163. *@return dataTime timestamp   
  164.   
  165. public final static java.sql.Timestamp string2Time(String dateString)   
  166. throws java.text.ParseException {   
  167. DateFormat dateFormat;   
  168. dateFormat = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss.SSS", Locale.ENGLISH);//设定格式   
  169. //dateFormat = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss", Locale.ENGLISH);   
  170. dateFormat.setLenient(false);   
  171. java.util.Date timeDate = dateFormat.parse(dateString);//util类型   
  172. java.sql.Timestamp dateTime = new java.sql.Timestamp(timeDate.getTime());//Timestamp类型,timeDate.getTime()返回一个long型   
  173. return dateTime;   
  174. }   
  175.   
  176. *method 将字符串类型的日期转换为一个Date(java.sql.Date)   
  177. *@param dateString 需要转换为Date的字符串   
  178. *@return dataTime Date   
  179.   
  180. public final static java.sql.Date string2Date(String dateString)   
  181. throws java.lang.Exception {   
  182. DateFormat dateFormat;   
  183. dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);   
  184. dateFormat.setLenient(false);   
  185. java.util.Date timeDate = dateFormat.parse(dateString);//util类型   
  186. java.sql.Date dateTime = new java.sql.Date(timeDate.getTime());//sql类型   
  187. return dateTime;   
  188. }   
  189.   
  190. public static void main(String[] args){   
  191. Date da = new Date();   
  192. 注意:这个地方da.getTime()得到的是一个long型的值   
  193. System.out.println(da.getTime());   
  194.   
  195. 由日期date转换为timestamp   
  196.   
  197. 第一种方法:使用new Timestamp(long)   
  198. Timestamp t = new Timestamp(new Date().getTime());   
  199. System.out.println(t);   
  200.   
  201. 第二种方法:使用Timestamp(int year,int month,int date,int hour,int minute,int second,int nano)   
  202. Timestamp tt = new Timestamp(Calendar.getInstance().get(   
  203.       Calendar.YEAR) - 1900, Calendar.getInstance().get(   
  204.       Calendar.MONTH), Calendar.getInstance().get(   
  205.       Calendar.DATE), Calendar.getInstance().get(   
  206.       Calendar.HOUR), Calendar.getInstance().get(   
  207.       Calendar.MINUTE), Calendar.getInstance().get(   
  208.       Calendar.SECOND), 0);   
  209. System.out.println(tt);   
  210.   
  211. try {   
  212. String sToDate = "2005-8-18";//用于转换成java.sql.Date的字符串   
  213.       String sToTimestamp = "2005-8-18 14:21:12.123";//用于转换成java.sql.Timestamp的字符串   
  214.       Date date1 = string2Date(sToDate);   
  215.       Timestamp date2 = string2Time(sToTimestamp);   
  216. System.out.println("Date:"+date1.toString());//结果显示   
  217. System.out.println("Timestamp:"+date2.toString());//结果显示   
  218. }catch(Exception e) {   
  219. e.printStackTrace();   
  220. }   
  221. }   
  222. }   
分享到:
评论

相关推荐

    常用java date方法集合

    常用java date方法集合,对DATE类型操作的总结

    java常用工具类的使用

    而Date的其他构造方法和普通方法的API都不容易实现国际化,因此目前Date类的大多数方法都被标识为过时,表示更灵活的时间类请参考java.util.Calendar。 Date的输出结果是按照国际通用格式输出的,而中国更习惯于...

    Java开发技术大全(500个源代码).

    differ.java 测试静态方法与实例方法之间的区别 forefather.java 一个简单的基类 grandson.java 上面这个类的子类 hasConstructor.java 拥有构造器的类 hasFinalFun.java 拥有最终方法的类 hasRecall.java ...

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

    1.4 java中的一些常用词汇 1.5 J2SE学习中的30个基本概念 1.6 Java线程 1.7 Java 5.0多线程编程 1.8 Java Socket编程 1.9 Java的内存泄漏 1.10 抽象类与接口的区别 1.11 Java变量类型间的相互转换 2 JAVA与WEB 2.1 ...

    Java基础知识点总结.docx

    <java.lang>.Date:日期类,月份从0—11 92 <java.lang> Calendar:日历类 93 十六、 IO流:用于处理设备上数据 ★★★★★ 94 IO流的概念 95 字符流与字节流 98 流对象 101 File类 102 Java.util.Properties 103 ...

    廖雪峰 Java 教程.doc

    Java集合简介 使用List 编写equals方法 使用Map 编写equals和hashCode 使用EnumMap 使用TreeMap 使用Properties 使用Set 使用Queue 使用PriorityQueue 使用Deque 使用Stack 使用Iterator 使用...

    java实现页面表格数据输出到excel

    * 这是一个通用的方法,利用了JAVA的反射机制, * 可以将放置在JAVA集合中并且符合一定条件的数据以EXCEL的形式输 出到指定IO设备上 * @param title 表格标题名 * @param headers 表格属性列名数组 * @...

    Java开发详解.zip

    031105_【第11章:Java常用类库】_日期操作类(Date、Calendar)笔记.pdf 031106_【第11章:Java常用类库】_日期操作类(DateFormat、SimpleDateFormat)笔记.pdf 031107_〖第11章:Java常用类库〗_实例操作:取得...

    JAVA SE学习精华集锦

    1.4 java中的一些常用词汇 56 1.5 J2SE学习中的30个基本概念 58 1.6 Java线程 60 1.7 Java 5.0多线程编程 65 1.8 Java Socket编程 80 1.9 Java的内存泄漏 85 1.10 抽象类与接口的区别 86 1.11 Java变量类型间的相互...

    java进阶13天资料.zip

    day04-常用API、正则表达式,泛型、Collection集合API day05-迭代器,数据结构,List,Set ,TreeSet集合,Collections工具类 day06-Map集合,HashMapTreeMap,斗地主、图书管理系统,排序算法 day07-异常,线程的创建方式...

    JAVA基础课程讲义

    常用Java开发工具 20 常用dos命令 21 本章笔试作业 21 本章上机操作 21 第二章(1) 编程的基本概念 22 注释 22 标识符 22 关键字/保留字 23 变量(variable) 24 常量(Constant) 25 命名规则(规范) 25 基本数据类型...

    AIC的Java课程1-6章

    第3版 机械工业出版社  教学内容和要求 知识点 重要程度 使用频度 难度 Java 入门 高 中 易 变量和运算符 高 高 中 控制结构 高 高 易 数组 高 高 中 方法 很高 高 中 封装 很高 很高 难...

    Java语音学习,基础教程

    熟悉常用API:包括Date、DateFormat、Calendar、System和StringBuilde等,这些是在Java编程中经常用到的类和方法。 学习集合:理解Java中的Collection、泛型、List、Set、Collections、Map和HashMap等概念和用法。 ...

    疯狂JAVA讲义

    5.4.4 Java的常用包 140 5.5 深入构造器 140 5.5.1 使用构造器执行初始化 141 学生提问:构造器是创建Java对象的途径,是不是说构造器完全负责创建Java对象? 141 5.5.2 构造器的重载 142 学生提问:为什么要用...

    基础深化和提高-常用类

    Java常用类指的是Java标准库中提供的一些常用的类,这些类提供了丰富的功能和工具,可以帮助开发者更高效地编写Java程序。Java常用类包括但不限于以下几个方面的内容: 集合类: ArrayList、LinkedList、HashMap、...

    张孝祥Java就业培训教程.pdf

    在以后的章节中,用通俗易懂的手法,紧密联系实际应用的方式,深入浅出地讲解了多线程,常用Java类,Java中的I/O(输入输出)编程,GUI与Applet,网络编程等方面的知识。 本书许多内容都来源于程序员圈子里的非正式...

    近5年133个Java面试问题列表

    Java 集合框架 数组 字符串 GOF 设计模式 SOLID (单一功能、 开闭原则、 里氏替换、 接口隔离以及依赖反转) 设计原则 抽象类与接口 Java 基础, 如 equals 和 hashcode 泛型与枚举 Java IO 与 NIO 常用网络协议 ...

    java 面试题 总结

    Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。 10、&和&&的区别。 &是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)。 11、HashMap...

    Java 语言基础 —— 非常符合中国人习惯的Java基础教程手册

    在 java 语言中,Java 程序的基本单位是类,也就是说:一个 Java 程序是由多个类组成 的。定义一个类与定义一个数据类型是有区别的。在程序设计语言中,把定义数据类型的能 力作为一种很重要的能力来对待。在面向...

Global site tag (gtag.js) - Google Analytics