- 浏览: 21576 次
- 性别:
- 来自: 大连
文章分类
最新评论
今天遇到了日期转换知识,在网上搜集了一个测试例子,并且在自己电脑上测试了一下,顺便记载下来,便于以后查找:
封装工具类:
测试类:
输出结果:
补充内容:
测试类
运行结果:
封装工具类:
package dataDemo; import java.io.Serializable; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.TimeZone; /** * 日期时间处理封装 * */ public class DateTime implements Comparable<DateTime>, Serializable { private static final long serialVersionUID = 4715414577633839197L; private Calendar calendar = Calendar.getInstance(); private SimpleDateFormat sdf = new SimpleDateFormat(); private final String DEFAULT_DATETIME_PATTERN = "yyyy-MM-dd HH:mm:ss"; private final String DEFAULT_DATE_PATTERN = "yyyy-MM-dd"; private final String DEFAULT_TIME_PATTERN = "HH:mm:ss"; public DateTime() { } public DateTime(String dateStr) { try { parse(dateStr); } catch (Exception e) { e.printStackTrace(); } } public DateTime(String dateStr, TimeZone timeZone) { this(dateStr); calendar.setTimeZone(timeZone); } public DateTime(String dateStr, String pattern) { try { parse(dateStr, pattern); } catch (Exception e) { e.printStackTrace(); } } public DateTime(String dateStr, String pattern, TimeZone timeZone) { this(dateStr, pattern); calendar.setTimeZone(timeZone); } public DateTime(int year, int month, int day, int hour, int minute, int second) { calendar.set(year, month, day, hour, minute, second); } public DateTime(int year, int month, int day, int hour, int minute, int second, TimeZone timeZone) { this(year, month, day, hour, minute, second); calendar.setTimeZone(timeZone); } public DateTime(long milliSeconds) { calendar.setTimeInMillis(milliSeconds); } public Calendar getCalendar() { return calendar; } public void setCalendar(Calendar calendar) { this.calendar = calendar; } public Date getDate() { return calendar.getTime(); } public void setDate(Date date) { calendar.setTime(date); } public int getYear() { return calendar.get(Calendar.YEAR); } public void setYear(int year) { calendar.set(Calendar.YEAR, year); } public int getMonth() { return calendar.get(Calendar.MONTH); } public void setMonth(int month) { calendar.set(Calendar.MONTH, month); } public int getDay() { return calendar.get(Calendar.DAY_OF_MONTH); } public void setDay(int dayOfMonth) { calendar.set(Calendar.DAY_OF_MONTH, dayOfMonth); } public int getHour() { return calendar.get(Calendar.HOUR_OF_DAY); } public void setHour(int hour) { calendar.set(Calendar.HOUR_OF_DAY, hour); } public int getMinute() { return calendar.get(Calendar.MINUTE); } public void setMinute(int minute) { calendar.set(Calendar.MINUTE, minute); } public int getSecond() { return calendar.get(Calendar.SECOND); } public void setSecond(int second) { calendar.set(Calendar.SECOND, second); } public long getTimeInMilliSeconds() { return calendar.getTimeInMillis(); } public void setTimeInMilliSeconds(long milliSeconds) { calendar.setTimeInMillis(milliSeconds); } public TimeZone getTimeZone() { return calendar.getTimeZone(); } public void setTimeZone(TimeZone timeZone) { calendar.setTimeZone(timeZone); } /** * 使用默认格式解析日期字符串 * * @param dateStr * @throws Exception */ public void parse(String dateStr) throws Exception { try { parse(dateStr, DEFAULT_DATETIME_PATTERN); } catch (Exception e) { try { parse(dateStr, DEFAULT_DATE_PATTERN); } catch (Exception e1) { try { parse(dateStr, DEFAULT_TIME_PATTERN); } catch (Exception e2) { throw new Exception("the date string [" + dateStr + "] could not be parsed"); } } } } /** * 使用给定模式解析日期字符串 * * @param dateStr * @param pattern * @throws Exception */ public void parse(String dateStr, String pattern) throws Exception { if (dateStr == null) { throw new NullPointerException("date string could not be null"); } if (pattern == null) { throw new NullPointerException("the pattern string could not be null"); } try { sdf.applyPattern(pattern); sdf.parse(dateStr); } catch (ParseException e) { throw new Exception("the date string [" + dateStr + "] could not be parsed with the pattern [" + pattern + "]"); } calendar = sdf.getCalendar(); } /** * 格式化当前DateTime对象代表的时间 * * @param pattern * @return */ public String format(String pattern) { sdf.applyPattern(pattern); return sdf.format(calendar.getTime()); } /** * 获取默认格式日期字符串 * * @return */ public String toDateTimeString() { sdf.applyPattern(DEFAULT_DATETIME_PATTERN); return sdf.format(calendar.getTime()); } @Override public int compareTo(DateTime otherDateTime) { return calendar.compareTo(otherDateTime.getCalendar()); } /** * 是否闰年 * * @return */ public boolean isLeapYear() { int year = getYear(); boolean result = false; if (year % 100 == 0) { if (year % 400 == 0) { result = true; } } else if (year % 4 == 0) { result = true; } return result; } /** * 获取星期 * * @return */ public int getDayOfWeek() { return calendar.get(Calendar.DAY_OF_WEEK); } /** * 是否周末 * * @return */ public boolean isWeekend() { int dayOfWeek = getDayOfWeek(); return dayOfWeek == 1 || dayOfWeek == 7; } /** * 当前DateTime对象月份天数 * * @return */ public int getDayNumsInMonth() { Calendar c = (Calendar) calendar.clone(); c.set(Calendar.DAY_OF_MONTH, 1); c.roll(Calendar.DAY_OF_MONTH, -1); return c.get(Calendar.DAY_OF_MONTH); } /** * 两个日期之间间隔天数 * * @param otherDateTime * @return */ public int dayNumFrom(DateTime otherDateTime) { long millis = Math.abs(getTimeInMilliSeconds() - otherDateTime.getTimeInMilliSeconds()); int days = (int) Math.floor(millis / 86400000); return days; } public boolean lessThan(DateTime otherDateTime) { return compareTo(otherDateTime) < 0; } public boolean greaterThan(DateTime otherDateTime) { return compareTo(otherDateTime) > 0; } public boolean equal(DateTime otherDateTime) { return compareTo(otherDateTime) == 0; } /** * 当前时间基础上增加秒数(负数时为减) * * @param amount */ public void plusSecond(int amount) { calendar.add(Calendar.SECOND, amount); } public void plusMinute(int amount) { calendar.add(Calendar.MINUTE, amount); } public void plusHour(int amount) { calendar.add(Calendar.HOUR, amount); } public void plusDays(int amount) { calendar.add(Calendar.DAY_OF_MONTH, amount); } public void plusMonth(int amount) { calendar.add(Calendar.MONTH, amount); } public void plusYear(int amount) { calendar.add(Calendar.YEAR, amount); } public void plus(int year, int month, int day, int hour, int minute, int second) { plusYear(year); plusMonth(month); plusDays(day); plusHour(hour); plusMinute(minute); plusSecond(second); } }
测试类:
package dataDemo; import java.util.Date; public class DateTimeTest { public static void main(String[] args) throws Exception { DateTime dateTime = new DateTime(); DateTime dateTime2 = new DateTime("2013-12-12"); System.out.println("默认格式输出:" + dateTime.toDateTimeString()); System.out.println("是否闰年:" + dateTime.isLeapYear()); System.out.println("自定义格式输出:" + dateTime.format("yyyy-MM-dd")); System.out.println("输出到毫秒:" + dateTime.format("yyyy-MM-dd HH:mm:ss.SSS")); System.out.println("某月天数:" + dateTime.getDayNumsInMonth()); System.out.println("星期:" + dateTime.getDayOfWeek());//1:星期日,7:星期六 System.out.println("是否周末:" + dateTime.isWeekend()); System.out.println("相距:" + dateTime.dayNumFrom(dateTime2) + "天"); dateTime.plusMonth(1); System.out.println("增加一个月后的datetime: " + dateTime.toDateTimeString()); dateTime.plus(0, 0, 2, 4, 4, 5); System.out.println("增加 XXX后的datetime: " + dateTime.toDateTimeString()); System.out.println("毫秒数:" + dateTime.getTimeInMilliSeconds()); //DateTime转换为Date Date date = dateTime.getDate(); System.out.println( dateTime.getTimeInMilliSeconds() == date.getTime()); } }
输出结果:
默认格式输出:2013-09-26 09:26:22 是否闰年:false 自定义格式输出:2013-09-26 输出到毫秒:2013-09-26 09:26:22.078 某月天数:30 星期:5 是否周末:false 相距:76天 增加一个月后的datetime: 2013-10-26 09:26:22 增加 XXX后的datetime: 2013-10-28 13:30:27 毫秒数:1382938227078 true
补充内容:
package dataDemo; import java.sql.Timestamp; import java.text.ParseException; import java.text.ParsePosition; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class Demo { /** * 返回当前日期时间字符串<br> * 默认格式:yyyy-mm-dd hh:mm:ss * * @return String 返回当前字符串型日期时间 */ public static String getCurrentTime() { String returnStr = null; SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = new Date(); returnStr = f.format(date); return returnStr; } /** * 返回自定义格式的当前日期时间字符串 * * @param format * 格式规则 * @return String 返回当前字符串型日期时间 */ public static String getCurrentTime(String format) { String returnStr = null; SimpleDateFormat f = new SimpleDateFormat(format); Date date = new Date(); returnStr = f.format(date); return returnStr; } /** * 返回当前字符串型日期 * * @return String 返回的字符串型日期 */ public static String getCurDate() { Calendar calendar = Calendar.getInstance(); SimpleDateFormat simpledateformat = new SimpleDateFormat("yyyy-MM-dd"); String strDate = simpledateformat.format(calendar.getTime()); return strDate; } /** * 返回当前TimeStamp字符串型日期 * * @return */ public static String getCurrentTimestamp() { Calendar calendar = Calendar.getInstance(); SimpleDateFormat simpledateformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String strDate = simpledateformat.format(calendar.getTime()); return strDate; } /** * 返回当前TimeStamp字符串型日期 * * @return */ public static String getCurrentChinaData() { Calendar calendar = Calendar.getInstance(); SimpleDateFormat simpledateformat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); String strDate = simpledateformat.format(calendar.getTime()); return strDate; } /** * 根据日期获取星期 * * @param strdate * @return */ public static String getWeekDayByDate(String strdate) { final String dayNames[] = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" }; SimpleDateFormat sdfInput = new SimpleDateFormat("yyyy-MM-dd"); Calendar calendar = Calendar.getInstance(); Date date = new Date(); try { date = sdfInput.parse(strdate); } catch (ParseException e) { e.printStackTrace(); } calendar.setTime(date); int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK) - 1; if (dayOfWeek < 0) dayOfWeek = 0; return dayNames[dayOfWeek]; } /** * 合并字符串数组 * * @param a * 字符串数组0 * @param b * 字符串数组1 * @return 返回合并后的字符串数组 */ public static String[] mergeStringArray(String[] a, String[] b) { if (a.length == 0 || a==null) return b; if (b.length == 0 || b==null) return a; String[] c = new String[a.length + b.length]; for (int m = 0; m < a.length; m++) { c[m] = a[m]; } for (int i = 0; i < b.length; i++) { c[a.length + i] = b[i]; } return c; } }
测试类
package dataDemo; import java.util.Date; import java.text.SimpleDateFormat; public class DemoTest { /** * @param args */ public static void main(String[] args) throws Exception { Demo demo=new Demo(); System.out.println(demo.getCurrentTime()); System.out.println(demo.getCurrentTime("2013-09-26")); System.out.println(demo.getCurrentTime("2013年09月26日")); System.out.println(demo.getCurDate()); System.out.println(demo.getCurrentTimestamp()); System.out.println(demo.getCurrentChinaData()); System.out.println(demo.getWeekDayByDate("2013-09-26")); String[] a={"sddsds","dsfdssdf"}; String[] b={"q11111","dffddf"}; String[] c=demo.mergeStringArray(a, b); System.out.println(c.length); System.out.println(c[0]+"1111"+c[1]); } }
运行结果:
2013-09-26 15:28:40 2013-09-26 2013年09月26日 2013-09-26 2013-09-26 15:28:40 2013年09月26日 15:28:40 星期四 4 sddsds1111dsfdssdf
发表评论
-
java中List对象排序的通用方法
2015-03-26 11:10 351http://blog.csdn.net/5iasp/arti ... -
得到List中重复的数据
2014-07-01 17:00 351// set中存放的是不可重复的元素 HashSet& ... -
jdbc
2014-06-26 07:38 356webservice :http://www.blogjava ... -
Java中如何遍历Map对象的4种方法
2014-04-21 08:55 564转自:http://blog.csdn.net/tjcyjd/ ... -
Array、List互相转换
2013-10-18 10:19 568数组转换为list: package com.basic.ob ... -
What version of Java do I have installed?
2013-10-16 16:42 515查看java版本:java -version -
java排序
2013-10-16 15:17 375排序方法: package com.sst; publi ... -
数字转换为汉语中人民币的大写(转载)
2013-09-27 14:06 877java转换一: package dataDe ... -
单例模式
2013-09-26 11:19 307摘自:博客园,小黎*chichy Go for it ,向攻城 ... -
java随机数
2013-09-26 10:58 409有关随机数,在网上找了一些资料,感觉总结的不错,就记载下来,以 ... -
java日期
2013-09-26 09:51 0package dataDemo; impor ... -
java判断字符串是否为汉字
2013-08-15 17:59 925//正则表达式实现 String ... -
java 读取文件
2013-07-12 12:47 3401、按字节读取文件内容 2、按字符读取文件内容 3、按行读取文 ...
相关推荐
Java日期工具类 1、日期的各种格式化 2、获取当前年度 3、获取当前月份 4、获取当前天号数 5、获取当前时间往前推一个月的时间 6、获取上个月("MMM yyyy") 7、获取上个月("yyyymm") 8、获取上个月("yyyy-mm") 9、...
Java日期工具类是Java开发中不可或缺的一部分,它们用于处理日期和时间相关的操作。在Java中,日期和时间处理涉及到多个类和接口,如`java.util.Date`、`java.util.Calendar`、`java.text.SimpleDateFormat`以及Java...
Java 日期比较工具类 各种日期操作及计算( 获取两个日期 间隔天数 间隔月数 格式化日期 )
本篇将围绕Java中的日期工具类和时间工具类展开讨论,同时会涉及到日期时间的格式化。 首先,Java 8之前,我们主要依赖`java.util.Date`和`java.text.SimpleDateFormat`这两个类来处理日期和时间。`Date`类用于表示...
public static final String PATTERN_YYYY_MM_DD = "yyyy-MM-dd";public static final String YYYY_MM_DD = "yyyyMMdd";public static final String PATTERN_YYYY_MM_DD2 = "yyyy/MM/dd";/** 完整时间 yyyy-MM-dd HH...
个人整理的java的关于Date对象的日期时间处理工具类,若存在问题还望大家在评论中提出,我将一直进行修改维护
这是日期工具类,后续会继续上传
快速日期格式化类 ,线程安全的 包括:获取 DateUtil.STYLE格式的日期 字符转日期 日期转字符 字符日期从src_format改为dest_format 返回当前系统日期时间等
Java 日期工具类 DateUtils 实例详解 本文主要介绍了 Java 日期工具类 DateUtils 实例的实现和使用,涵盖了日期工具类的常用方法和变量,包括日期格式化、字符串转换、日期比较等。 日期工具类 DateUtils ...
各种日期格式化和转换 将 Calendar 转为字符串 获取当前月份的最后一天 根据 timestamp 生成各类时间状态串 计算两个日期之间相差的天数 等等等等
本文将深入探讨Java中的日期时间工具类,特别是基于给定的"DateUtil.java"文件,我们将聚焦在传统`java.util.Date`和`java.text.SimpleDateFormat`以及Java 8的`java.time`包中的相关类。 首先,我们来看看`java....
一名优秀的程序员,不仅需要有着丰富解决问题的方案,...虽然网络上也有类似的工具类,但我愿意自己写的原因有三: 1、好代码并不容易找,不满足需要的倒是不少 2、可能存在未知的bug 3、丧失了巩固和提高自己的机会
Java日期工具类在软件开发中扮演着重要角色,尤其是在处理与日期和时间相关的任务时。本文分享的`DateUtils`是一个自定义的日期工具类,它提供了多种格式化和解析日期的方法,以适应不同的需求。下面将详细介绍这个...
在开发过程中,经常会判断日期处理。文档是开发过程中对时间处理,几乎包含不了所有用的转换,请放心使用。