1. package cn.knet.data.untils;
  2.  
  3. import java.text.SimpleDateFormat;
  4. import java.util.Calendar;
  5. import java.util.Date;
  6. import java.util.GregorianCalendar;
  7.  
  8. /**
  9. * yyyy-MM-dd HH:mm:ss
  10. * @author zhaoyb
  11. *
  12. */
  13. public class DateUtil {
  14.  
  15. /**
  16. * 把日期字符串格式化成日期类型
  17. * @param dateStr
  18. * @param format
  19. * @return
  20. */
  21. public static Date convert2Date(String dateStr, String format) {
  22. SimpleDateFormat simple = new SimpleDateFormat(format);
  23. try {
  24. simple.setLenient(false);
  25. return simple.parse(dateStr);
  26. } catch (Exception e) {
  27. return null;
  28. }
  29. }
  30.  
  31. /**
  32. * 把日期类型格式化成字符串
  33. * @param date
  34. * @param format
  35. * @return
  36. */
  37. public static String convert2String(Date date, String format) {
  38. SimpleDateFormat formater = new SimpleDateFormat(format);
  39. try {
  40. return formater.format(date);
  41. } catch (Exception e) {
  42. return null;
  43. }
  44. }
  45.  
  46. /**
  47. * 转sql的time格式
  48. * @param date
  49. * @return
  50. */
  51. public static java.sql.Timestamp convertSqlTime(Date date){
  52. java.sql.Timestamp timestamp = new java.sql.Timestamp(date.getTime());
  53. return timestamp;
  54. }
  55.  
  56. /**
  57. * 转sql的日期格式
  58. * @param date
  59. * @return
  60. */
  61. public static java.sql.Date convertSqlDate(Date date){
  62. java.sql.Date Datetamp = new java.sql.Date(date.getTime());
  63. return Datetamp;
  64. }
  65.  
  66. /**
  67. * 获取当前日期
  68. * @param format
  69. * @return
  70. */
  71. public static String getCurrentDate(String format) {
  72. return new SimpleDateFormat(format).format(new Date());
  73. }
  74.  
  75. /**
  76. * 获取时间戳
  77. * @return
  78. */
  79. public static long getTimestamp()
  80. {
  81. return System.currentTimeMillis();
  82. }
  83.  
  84. /**
  85. * 获取月份的天数
  86. * @param year
  87. * @param month
  88. * @return
  89. */
  90. public static int getDaysOfMonth(int year, int month) {
  91. Calendar calendar = Calendar.getInstance();
  92. calendar.set(year, month - 1, 1);
  93. return calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
  94. }
  95.  
  96. /**
  97. * 获取日期的年
  98. * @param date
  99. * @return
  100. */
  101. public static int getYear(Date date) {
  102. Calendar calendar = Calendar.getInstance();
  103. calendar.setTime(date);
  104. return calendar.get(Calendar.YEAR);
  105. }
  106.  
  107. /**
  108. * 获取日期的月
  109. * @param date
  110. * @return
  111. */
  112. public static int getMonth(Date date) {
  113. Calendar calendar = Calendar.getInstance();
  114. calendar.setTime(date);
  115. return calendar.get(Calendar.MONTH) + 1;
  116. }
  117.  
  118. /**
  119. * 获取日期的日
  120. * @param date
  121. * @return
  122. */
  123. public static int getDay(Date date) {
  124. Calendar calendar = Calendar.getInstance();
  125. calendar.setTime(date);
  126. return calendar.get(Calendar.DATE);
  127. }
  128.  
  129. /**
  130. * 获取日期的时
  131. * @param date
  132. * @return
  133. */
  134. public static int getHour(Date date) {
  135. Calendar calendar = Calendar.getInstance();
  136. calendar.setTime(date);
  137. return calendar.get(Calendar.HOUR);
  138. }
  139.  
  140. /**
  141. * 获取日期的分种
  142. * @param date
  143. * @return
  144. */
  145. public static int getMinute(Date date) {
  146. Calendar calendar = Calendar.getInstance();
  147. calendar.setTime(date);
  148. return calendar.get(Calendar.MINUTE);
  149. }
  150.  
  151. /**
  152. * 获取日期的秒
  153. * @param date
  154. * @return
  155. */
  156. public static int getSecond(Date date) {
  157. Calendar calendar = Calendar.getInstance();
  158. calendar.setTime(date);
  159. return calendar.get(Calendar.SECOND);
  160. }
  161.  
  162. /**
  163. * 获取星期几
  164. * @param date
  165. * @return
  166. */
  167. public static int getWeekDay(Date date) {
  168. Calendar calendar = Calendar.getInstance();
  169. calendar.setTime(date);
  170. int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
  171. return dayOfWeek-1;
  172. }
  173.  
  174. /**
  175. * 获取哪一年共有多少周
  176. * @param year
  177. * @return
  178. */
  179. public static int getMaxWeekNumOfYear(int year) {
  180. Calendar c = new GregorianCalendar();
  181. c.set(year, Calendar.DECEMBER, 31, 23, 59, 59);
  182. return getWeekNumOfYear(c.getTime());
  183. }
  184.  
  185. /**
  186. * 取得某天是一年中的多少周
  187. * @param date
  188. * @return
  189. */
  190. public static int getWeekNumOfYear(Date date) {
  191. Calendar c = new GregorianCalendar();
  192. c.setFirstDayOfWeek(Calendar.MONDAY);
  193. c.setMinimalDaysInFirstWeek(7);
  194. c.setTime(date);
  195. return c.get(Calendar.WEEK_OF_YEAR);
  196. }
  197.  
  198. /**
  199. * 取得某天所在周的第一天
  200. * @param year
  201. * @return
  202. */
  203. public static Date getFirstDayOfWeek(Date date) {
  204. Calendar c = new GregorianCalendar();
  205. c.setFirstDayOfWeek(Calendar.MONDAY);
  206. c.setTime(date);
  207. c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek());
  208. return c.getTime();
  209. }
  210.  
  211. /**
  212. * 取得某天所在周的最后一天
  213. * @param date
  214. * @return
  215. */
  216. public static Date getLastDayOfWeek(Date date) {
  217. Calendar c = new GregorianCalendar();
  218. c.setFirstDayOfWeek(Calendar.MONDAY);
  219. c.setTime(date);
  220. c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek() + 6);
  221. return c.getTime();
  222. }
  223.  
  224. /**
  225. * 取得某年某周的第一天 对于交叉:2008-12-29到2009-01-04属于2008年的最后一周,2009-01-05为2009年第一周的第一天
  226. * @param year
  227. * @param week
  228. * @return
  229. */
  230. public static Date getFirstDayOfWeek(int year, int week) {
  231. Calendar calFirst = Calendar.getInstance();
  232. calFirst.set(year, 0, 7);
  233. Date firstDate = getFirstDayOfWeek(calFirst.getTime());
  234.  
  235. Calendar firstDateCal = Calendar.getInstance();
  236. firstDateCal.setTime(firstDate);
  237.  
  238. Calendar c = new GregorianCalendar();
  239. c.set(Calendar.YEAR, year);
  240. c.set(Calendar.MONTH, Calendar.JANUARY);
  241. c.set(Calendar.DATE, firstDateCal.get(Calendar.DATE));
  242.  
  243. Calendar cal = (GregorianCalendar) c.clone();
  244. cal.add(Calendar.DATE, (week - 1) * 7);
  245. firstDate = getFirstDayOfWeek(cal.getTime());
  246.  
  247. return firstDate;
  248. }
  249.  
  250. /**
  251. * 取得某年某周的最后一天 对于交叉:2008-12-29到2009-01-04属于2008年的最后一周, 2009-01-04为
  252. * 2008年最后一周的最后一天
  253. * @param year
  254. * @param week
  255. * @return
  256. */
  257. public static Date getLastDayOfWeek(int year, int week) {
  258. Calendar calLast = Calendar.getInstance();
  259. calLast.set(year, 0, 7);
  260. Date firstDate = getLastDayOfWeek(calLast.getTime());
  261.  
  262. Calendar firstDateCal = Calendar.getInstance();
  263. firstDateCal.setTime(firstDate);
  264.  
  265. Calendar c = new GregorianCalendar();
  266. c.set(Calendar.YEAR, year);
  267. c.set(Calendar.MONTH, Calendar.JANUARY);
  268. c.set(Calendar.DATE, firstDateCal.get(Calendar.DATE));
  269.  
  270. Calendar cal = (GregorianCalendar) c.clone();
  271. cal.add(Calendar.DATE, (week - 1) * 7);
  272. Date lastDate = getLastDayOfWeek(cal.getTime());
  273.  
  274. return lastDate;
  275. }
  276.  
  277. private static Date add(Date date, int calendarField, int amount) {
  278. if (date == null) {
  279. throw new IllegalArgumentException("The date must not be null");
  280. } else {
  281. Calendar c = Calendar.getInstance();
  282. c.setTime(date);
  283. c.add(calendarField, amount);
  284. return c.getTime();
  285. }
  286. }
  287.  
  288. /*
  289. * 1则代表的是对年份操作, 2是对月份操作, 3是对星期操作, 5是对日期操作, 11是对小时操作, 12是对分钟操作, 13是对秒操作,
  290. * 14是对毫秒操作
  291. */
  292.  
  293. /**
  294. * 增加年
  295. * @param date
  296. * @param amount
  297. * @return
  298. */
  299. public static Date addYears(Date date, int amount) {
  300. return add(date, 1, amount);
  301. }
  302.  
  303. /**
  304. * 增加月
  305. * @param date
  306. * @param amount
  307. * @return
  308. */
  309. public static Date addMonths(Date date, int amount) {
  310. return add(date, 2, amount);
  311. }
  312.  
  313. /**
  314. * 增加周
  315. * @param date
  316. * @param amount
  317. * @return
  318. */
  319. public static Date addWeeks(Date date, int amount) {
  320. return add(date, 3, amount);
  321. }
  322.  
  323. /**
  324. * 增加天
  325. * @param date
  326. * @param amount
  327. * @return
  328. */
  329. public static Date addDays(Date date, int amount) {
  330. return add(date, 5, amount);
  331. }
  332.  
  333. /**
  334. * 增加时
  335. * @param date
  336. * @param amount
  337. * @return
  338. */
  339. public static Date addHours(Date date, int amount) {
  340. return add(date, 11, amount);
  341. }
  342.  
  343. /**
  344. * 增加分
  345. * @param date
  346. * @param amount
  347. * @return
  348. */
  349. public static Date addMinutes(Date date, int amount) {
  350. return add(date, 12, amount);
  351. }
  352.  
  353. /**
  354. * 增加秒
  355. * @param date
  356. * @param amount
  357. * @return
  358. */
  359. public static Date addSeconds(Date date, int amount) {
  360. return add(date, 13, amount);
  361. }
  362.  
  363. /**
  364. * 增加毫秒
  365. * @param date
  366. * @param amount
  367. * @return
  368. */
  369. public static Date addMilliseconds(Date date, int amount) {
  370. return add(date, 14, amount);
  371. }
  372.  
  373. /**
  374. * time差
  375. * @param before
  376. * @param after
  377. * @return
  378. */
  379. public static long diffTimes(Date before, Date after){
  380. return after.getTime() - before.getTime();
  381. }
  382.  
  383. /**
  384. * 秒差
  385. * @param before
  386. * @param after
  387. * @return
  388. */
  389. public static long diffSecond(Date before, Date after){
  390. return (after.getTime() - before.getTime())/1000;
  391. }
  392.  
  393. /**
  394. * 分种差
  395. * @param before
  396. * @param after
  397. * @return
  398. */
  399. public static int diffMinute(Date before, Date after){
  400. return (int)(after.getTime() - before.getTime())/1000/60;
  401. }
  402.  
  403. /**
  404. * 时差
  405. * @param before
  406. * @param after
  407. * @return
  408. */
  409. public static int diffHour(Date before, Date after){
  410. return (int)(after.getTime() - before.getTime())/1000/60/60;
  411. }
  412.  
  413. /**
  414. * 天数差
  415. * @param date1
  416. * @param date2
  417. * @return
  418. */
  419. public static int diffDay(Date before, Date after) {
  420. return Integer.parseInt(String.valueOf(((after.getTime() - before.getTime()) / 86400000)));
  421. }
  422.  
  423. /**
  424. * 月差
  425. * @param before
  426. * @param after
  427. * @return
  428. */
  429. public static int diffMonth(Date before, Date after){
  430. int monthAll=0;
  431. int yearsX = diffYear(before,after);
  432. Calendar c1 = Calendar.getInstance();
  433. Calendar c2 = Calendar.getInstance();
  434. c1.setTime(before);
  435. c2.setTime(after);
  436. int monthsX = c2.get(Calendar.MONTH) - c1.get(Calendar.MONTH);
  437. monthAll=yearsX*12+monthsX;
  438. int daysX =c2.get(Calendar.DATE) - c1.get(Calendar.DATE);
  439. if(daysX>0){
  440. monthAll=monthAll+1;
  441. }
  442. return monthAll;
  443. }
  444.  
  445. /**
  446. * 年差
  447. * @param before
  448. * @param after
  449. * @return
  450. */
  451. public static int diffYear(Date before, Date after) {
  452. return getYear(after) - getYear(before);
  453. }
  454.  
  455. /**
  456. * 设置23:59:59
  457. * @param date
  458. * @return
  459. */
  460. public static Date setEndDay(Date date) {
  461. Calendar calendar = Calendar.getInstance();
  462. calendar.setTime(date);
  463. calendar.set(Calendar.HOUR_OF_DAY, 23);
  464. calendar.set(Calendar.MINUTE, 59);
  465. calendar.set(Calendar.SECOND, 59);
  466. return calendar.getTime();
  467. }
  468.  
  469. /**
  470. * 设置00:00:00
  471. * @param date
  472. * @return
  473. */
  474. public static Date setStartDay(Date date) {
  475. Calendar calendar = Calendar.getInstance();
  476. calendar.setTime(date);
  477. calendar.set(Calendar.HOUR_OF_DAY, 00);
  478. calendar.set(Calendar.MINUTE, 00);
  479. calendar.set(Calendar.SECOND, 00);
  480. return calendar.getTime();
  481. }
  482.  
  483. }

整理的java的日期DateUtil的更多相关文章

  1. [转载]Java 8 日期&时间 API

    Java 8 日期和时间 声明 本文转自http://www.journaldev.com/2800/java-8-date-localdate-localdatetime-instant,以mark ...

  2. 国外程序员整理的Java资源大全分享

    Java 几乎是许多程序员们的入门语言,并且也是世界上非常流行的编程语言.国外程序员 Andreas Kull 在其 Github 上整理了非常优秀的 Java 开发资源,推荐给大家. 译文由 Imp ...

  3. 【转】国外程序员整理的Java资源大全

    Java几乎是许多程序员们的入门语言,并且也是世界上非常流行的编程语言.国外程序员Andreas Kull在其Github上整理了非常优秀的Java开发资源,推荐给大家.译文由ImportNew- 唐 ...

  4. JAVA 8 日期工具类

    JAVA 8 日期工具类 主题描述 JAVA中日期时间的历史 代码成果 主题描述 JAVA的日期时间一直比较混乱,本来以为joda会是巅峰,但是JAVA 8改变了我的思想.但是即便在JAVA 8面前, ...

  5. Java常用日期操作

    对java中常用的日期操作进行整理. 1.日期格式化 /* * 日期格式化类(必须掌握) * API: * G Era 标志符 Text AD y 年 Year 1996; 96 M 年中的月份 Mo ...

  6. 【转载】国外程序员整理的Java资源大全

    以下转载自: 推荐!国外程序员整理的Java资源大全中文版    https://github.com/akullpp/awesome-java英文版 Java 几乎是许多程序员们的入门语言,并且也是 ...

  7. 【转】JAVA 8 日期/时间(Date Time)API指南

    前言 本来想写下Java 8的日期/时间API,发现已经有篇不错的文章了,那就直接转载吧~ PS:主要内容没变,做了部分修改. 原文链接: journaldev 翻译: ImportNew.com - ...

  8. 记一个JAVA关于日期的坑

    JAVA解析日期格式代码,之前一直写成:“yyyy-MM-dd hh:mm”,比如"2016-01-18 11:00"."2016-01-18 15:00"都可 ...

  9. 国外程序员整理的Java资源

    好资料,慢慢学习.http://www.importnew.com/14429.html 构建 这里搜集了用来构建应用程序的工具. Apache Maven:Maven使用声明进行构建并进行依赖管理, ...

随机推荐

  1. 【Android测试】【随笔】与 “美丽说” 测试同事交流

    ◆版权声明:本文出自胖喵~的博客,转载必须注明出处. 转载请注明出处:http://www.cnblogs.com/by-dream/p/5405432.html 分享者简介 雪晗,3年+测试经验,现 ...

  2. The Bip Buffer - The Circular Buffer with a Twist

    Introduction The Bip-Buffer is like a circular buffer, but slightly different. Instead of keeping on ...

  3. [LeetCode]题解(python):090 Subsets II

    题目来源 https://leetcode.com/problems/subsets-ii/ Given a collection of integers that might contain dup ...

  4. [LeetCode]题解(python):045-Jump game II

    题目来源 https://leetcode.com/problems/jump-game-ii/ Given an array of non-negative integers, you are in ...

  5. Java 日志管理最佳实践

    转:http://blog.jobbole.com/51155/ 日志记录是应用程序运行中必不可少的一部分.具有良好格式和完备信息的日志记录可以在程序出现问题时帮助开发人员迅速地定位错误的根源.对于开 ...

  6. LeetCode Longest Palindrome

    原题链接在这里:https://leetcode.com/problems/longest-palindrome/ 题目: Given a string which consists of lower ...

  7. 一行两端对齐justify-content

    一.之前不了解css3的属性,更没听过flex布局 在处理表单前面的文字,两端对齐,按照我之前的前端人员,加空格处理,但是在不浏览器解析空格的宽是不一样的 上图就用空格,在不同浏览器显示的效果,有时候 ...

  8. keyup、keydown和keypress

    1.keydown(fn)(按下触发) 语法: $().keydown(function(e){ alert(e.keyCode); //按下a返回65 }) 例子: 2.keyup(fn)(按下弹起 ...

  9. JavaScript: JavaScript的简介和入门代码演示

    1.Javascript的发展历史介绍: javascript是指的实在网页上编写的编程语言,其主要是控制器html的动态显示效果.HTMl能带来的只是一些基本的页面的风格,而要展示的漂亮使用CSS, ...

  10. js访sleep方法

    function sleep(n) { var start = new Date().getTime(); while (true) if (new Date().getTime() - start ...