- 浏览: 22513 次
- 性别:
- 来自: 济南
-
最新评论
package cn.fiyo.base.util; import java.util.Locale; import java.util.Date; import java.util.Calendar; import java.util.GregorianCalendar; import java.text.ParseException; import java.text.SimpleDateFormat; public class DateUtils { /**数据库存储的时间格式串,如yyyymmdd 或yyyymmddHHMiSS*/ public static final int DB_STORE_DATE = 1; /**用连字符-分隔的时间时间格式串,如yyyy-mm-dd 或yyyy-mm-dd HH:Mi:SS*/ public static final int HYPHEN_DISPLAY_DATE = 2; /**用连字符.分隔的时间时间格式串,如yyyy.mm.dd 或yyyy.mm.dd HH:Mi:SS*/ public static final int DOT_DISPLAY_DATE = 3; /**用中文字符分隔的时间格式串,如yyyy年mm月dd 或yyyy年mm月dd HH:Mi:SS*/ public static final int CN_DISPLAY_DATE = 4; /*****数据库存储时间格式串,如yyyymmddHHMissSS**/ public static final int DB_LONG_DATE = 5; /** * 得到精确到秒的格式化当前时间串 * @param formatType 时间格式的类型{@link #DB_STORE_DATE},{@link #EN_HTML_DISPLAY_DATE},{@link #CN_HTML_DISPLAY_DATE} * @return 当前时间格式化时间串 */ public static String getCurrTimeStr(int formatType) { return getTimeStr(new Date(), formatType); } /** * 得到精确到秒的格式化时间串 * @param date 指定时间 * @param formatType 时间格式的类型{@link #DB_STORE_DATE},{@link #EN_HTML_DISPLAY_DATE},{@link #CN_HTML_DISPLAY_DATE} * @return 指定时间的格式化时间串 */ public static String getTimeStr(Date date, int formatType) { if (formatType < DB_STORE_DATE || formatType > DB_LONG_DATE) { throw new IllegalArgumentException("时间格式化类型不是合法的值。"); } else { String formatStr = null; switch (formatType) { case DB_STORE_DATE: formatStr = "yyyyMMddHHmmss"; break; case HYPHEN_DISPLAY_DATE: formatStr = "yyyy'-'MM'-'dd HH:mm:ss"; break; case DOT_DISPLAY_DATE: formatStr = "yyyy.MM.dd HH:mm:ss"; break; case CN_DISPLAY_DATE: formatStr = "yyyy'年'MM'月'dd'日' HH:mm:ss"; break; case DB_LONG_DATE: formatStr = "yyyyMMddHHmmssSS"; } SimpleDateFormat sdf = new SimpleDateFormat(formatStr); return sdf.format(date); } } /** * 得到精确到天的当前格式化日期串 * @param formatType 时间格式的类型{@link #DB_STORE_DATE},{@link #EN_HTML_DISPLAY_DATE},{@link #CN_HTML_DISPLAY_DATE} * @return */ public static String getCurrDateStr(int formatType) { return getDateStr(new Date(), formatType); } /** * 得到精确到天的指定时间格式化日期串 * @param date 指定时间 * @param formatType 时间格式的类型{@link #DB_STORE_DATE},{@link #EN_HTML_DISPLAY_DATE},{@link #CN_HTML_DISPLAY_DATE} * @return 指定时间格式化日期串 */ public static String getDateStr(Date date, int formatType) { if (formatType < DB_STORE_DATE || formatType > CN_DISPLAY_DATE) { throw new IllegalArgumentException("时间格式化类型不是合法的值。"); } else { String formatStr = null; switch (formatType) { case DB_STORE_DATE: formatStr = "yyyyMMdd"; break; case HYPHEN_DISPLAY_DATE: formatStr = "yyyy-MM-dd"; break; case DOT_DISPLAY_DATE: formatStr = "yyyy.MM.dd"; break; case CN_DISPLAY_DATE: formatStr = "yyyy'年'MM'月'dd'日'"; break; } SimpleDateFormat sdf = new SimpleDateFormat(formatStr); return sdf.format(date); } } /** * 得到精确到月的当前时间格式化年月串 * @param formatType 时间格式的类型{@link #DB_STORE_DATE},{@link #EN_HTML_DISPLAY_DATE},{@link #CN_HTML_DISPLAY_DATE} * @return 精确到月当前时间格式化年月串 */ public static String getYearMonthStr(int formatType) { return getYearMonthStr(new Date(), formatType); } /** * 得到精确到月的指定时间格式化年月串 * @param date 指定的时间 * @param formatType 时间格式的类型{@link #DB_STORE_DATE},{@link #EN_HTML_DISPLAY_DATE},{@link #CN_HTML_DISPLAY_DATE} * @return 精确到月当前时间格式化年月串 */ public static String getYearMonthStr(Date date, int formatType) { if (formatType < DB_STORE_DATE || formatType > CN_DISPLAY_DATE) { throw new IllegalArgumentException("时间格式化类型不是合法的值。"); } else { String formatStr = null; switch (formatType) { case DB_STORE_DATE: formatStr = "yyyyMM"; break; case HYPHEN_DISPLAY_DATE: formatStr = "yyyy-MM"; break; case DOT_DISPLAY_DATE: formatStr = "yyyy.MM"; break; case CN_DISPLAY_DATE: formatStr = "yyyy'年'MM'月'"; break; } SimpleDateFormat sdf = new SimpleDateFormat(formatStr); return sdf.format(date); } } /** * 将数据库存储的日期格式串转换为各种显示的格式 * @param dateStr 最小6位,最大14位的数据库存储格式时间串如:20041212 * @param formatType 时间格式的类型{@link #DB_STORE_DATE},{@link #EN_HTML_DISPLAY_DATE},{@link #CN_HTML_DISPLAY_DATE} * @return 格式化的时间串 */ public static String toDisplayStr(String dateStr, int formatType) { if (formatType < DB_STORE_DATE || formatType > CN_DISPLAY_DATE) { throw new IllegalArgumentException("时间格式化类型不是合法的值。"); } if (dateStr == null || dateStr.length() < 6 || dateStr.length() > 14 || formatType == DB_STORE_DATE) { return StringUtils.toVisualString(dateStr); } else { char[] charArr = null; switch (formatType) { case HYPHEN_DISPLAY_DATE: charArr = new char[] { '-', '-', ' ', ':', ':'}; break; case DOT_DISPLAY_DATE: charArr = new char[] { '.', '.', ' ', ':', ':'}; break; case CN_DISPLAY_DATE: charArr = new char[] {'年','月',' ', ':', ':'}; break; default: charArr = new char[] { '-', '-', ' ', ':', ':'}; } try { SimpleDateFormat sdf_1 = null; SimpleDateFormat sdf_2 = null; switch (dateStr.length()) { case 6: sdf_1 = new SimpleDateFormat("yyyyMM"); sdf_2 = new SimpleDateFormat("yyyy'" + charArr[0] + "'MM"); break; case 8: sdf_1 = new SimpleDateFormat("yyyyMMdd"); sdf_2 = new SimpleDateFormat("yyyy'" + charArr[0] + "'MM'" + charArr[1] + "'dd"); break; case 10: sdf_1 = new SimpleDateFormat("yyyyMMddHH"); sdf_2 = new SimpleDateFormat("yyyy'" + charArr[0] + "'MM'" + charArr[1] + "'dd'" + "+charArr[2]" + "'HH"); break; case 12: sdf_1 = new SimpleDateFormat("yyyyMMddHHmm"); sdf_2 = new SimpleDateFormat("yyyy'" + charArr[0] + "'MM'" + charArr[1] + "'dd'" + charArr[2] + "'HH'" + charArr[3] + "'mm"); break; case 14: sdf_1 = new SimpleDateFormat("yyyyMMddHHmmss"); sdf_2 = new SimpleDateFormat( "yyyy'" + charArr[0] + "'MM'" + charArr[1] + "'dd'" + charArr[2] + "'HH'" + charArr[3] + "'mm'" + charArr[4] + "'ss"); break; default: return dateStr; } return sdf_2.format(sdf_1.parse(dateStr)); } catch (ParseException ex) { return dateStr; } } } /** * 将显示格式的时间字符串转换为数据库存储的类型 * @param dateStr 最小4位,最大19位。显示的时间格式时间串如:2004-12-12 * @return 数据库存储的时间字符串 */ public static String toStoreStr(String dateStr) { if (dateStr == null || dateStr.trim().equals("")) { return ""; } StringBuffer strBuf = new StringBuffer(); for (int i = 0; i < dateStr.length(); i++) { if (dateStr.charAt(i) >= '0' && dateStr.charAt(i) <= '9') { strBuf.append(dateStr.charAt(i)); } } return strBuf.toString(); } /** * <b>功能描述:</b> * 把时间转换成14位的字符串,不足位数补充 0 或者 9 * @param dateStr String * @param key int * @return String */ public static String toStoreStr14(String dateStr, boolean bMax) { if (dateStr == null || dateStr.trim().equals("")) { return ""; } StringBuffer strBuf = new StringBuffer(toStoreStr(dateStr)); String retStr = strBuf.toString(); if (bMax) { retStr = StringUtils.pad(retStr, 14, '9', true); } else { retStr = StringUtils.pad(retStr, 14, '0', true); } return retStr; } /** * 将生日存储的时间格式转化为年龄(周岁,小数点后不计) * @param birthdayStr 生日字段 "yyyymmdd" * @return 年龄 */ public static String birthdayToAge(String birthdayStr) { if (birthdayStr == null || birthdayStr.length() < 6) { return ""; } else { int birthYear = Integer.parseInt(birthdayStr.substring(0, 4)); int birthMonth = Integer.parseInt(birthdayStr.substring(4, 6)); Calendar cal = new GregorianCalendar(); int currYear = cal.get(Calendar.YEAR); int currMonth = cal.get(Calendar.MONTH); int age = currYear - birthYear; age -= (currMonth < birthMonth) ? 1 : 0; return "" + age; } } /** * 功能描述: * 将年龄转换为生日 * @param age int * @return String */ public static String ageToBirthday(int age) { String currDateStr = DateUtils.getYearMonthStr(DB_STORE_DATE); int currDateInt = Integer.parseInt(currDateStr); int ageDateInt = currDateInt - age * 100; return String.valueOf(ageDateInt); } /** * 功能描述: * 增加一年 * @param age int * @return String */ public static String nextAgeDate(String birDate) { int currDateInt = Integer.parseInt(birDate); int ageDateInt = currDateInt + 100; return String.valueOf(ageDateInt); } /** * * @param dateTimeStr String 格式化的时间串 * @param formatType 数据格式类型 {@link #DB_STORE_DATE},{@link #EN_HTML_DISPLAY_DATE},{@link #CN_HTML_DISPLAY_DATE} * @param detal int 增加或减少的时间 * @param field int 参见Calendar中关于时间字段属性的定义 * @return String 返回的 */ public static String add(String dateTimeStr, int formatType, int detal, int field) { if (dateTimeStr == null || dateTimeStr.length() < 6) { return dateTimeStr; } else { try { String formatStr = null; switch (formatType) { case DB_STORE_DATE: formatStr = "yyyyMMddHHmmss"; break; case HYPHEN_DISPLAY_DATE: formatStr = "yyyy-MM-dd HH:mm:ss"; break; case DOT_DISPLAY_DATE: formatStr = "yyyy.MM.dd HH:mm:ss"; break; case CN_DISPLAY_DATE: formatStr = "yyyy'年'MM'月' HH:mm:ss"; break; default: formatStr = "yyyyMMddHHmmss"; break; } formatStr = formatStr.substring(0, dateTimeStr.length()); SimpleDateFormat sdf = new SimpleDateFormat(formatStr); Date d = sdf.parse(dateTimeStr); GregorianCalendar g = new GregorianCalendar(); g.setTime(d); g.add(field, detal); d = g.getTime(); return sdf.format(d); } catch (ParseException ex) { ex.printStackTrace(); return dateTimeStr; } } } // /** // * @param date Date 时间 // * @param detal int 增加的时间 // * @param field int 参见Calendar中关于时间字段属性的定义 // * @return Date // */ // public static Date add(Date date, int detal, int field) // { // Calendar g = new GregorianCalendar(); // g.setTime(date); // g.add(field, detal); // return g.getTime(); // } /** * 日期、时间格式化 * @param date Date * 将要被格式化的日期对象 * @param outFmt String * 返回样式,参照类说明,如:yyyy年MM月dd日 * @return String * 格式化后的日期、时间字符串,data为null时返回null,outFmt非法时返回yyyyMMdd格式 */ public static String getDateFormat(Date date, String outFmt) { if (null == date) { return null; } if (null == outFmt || "".equals(outFmt.trim())) { //outFmt非法 outFmt = "yyyyMMdd"; } String retu = null; SimpleDateFormat dateFormat = null; try { dateFormat = new SimpleDateFormat(outFmt); } catch (IllegalArgumentException iaex) { //outFmt非法 dateFormat = new SimpleDateFormat("yyyyMMdd"); } retu = dateFormat.format(date); dateFormat = null; return retu; } /** * 把日期时间对象格式化为yyyyMMdd样式 * @param date Date * 将要被格式化的日期对象 * @return String * 格式化后的日期、时间字符串,如:20041001 */ public static String getDateFormat(Date date) { return getDateFormat(date, "yyyyMMdd"); } /** * 把系统当前日期时间格式化为指定的样式 * @param outFmt String * 返回样式,参照类说明,如:yyyy年MM月dd日 * @return String * 格式化后的日期、时间字符串,如:2004年10月01日 */ public static String getDateFormat(String outFmt) { return getDateFormat(new Date(), outFmt); } /** * 把系统当前日期时间格式化为默认样式yyyyMMdd * @return String * 格式化后的日期、时间字符串,如:20041001 */ public static String getDateFormat() { return getDateFormat(new Date(), "yyyyMMdd"); } /** * 日期、时间格式化 * @param millis long * the number of milliseconds(毫秒) since January 1, 1970, 00:00:00 GMT. * @param outFmt String * 返回样式,参照类说明,如:yyyy年MM月dd日 * @return String * 格式化后的日期、时间字符串 */ public static String getDateFormat(long millis, String outFmt) { Date d = new Date(millis); Calendar calendar = Calendar.getInstance(); calendar.setTime(d); String retu = getDateFormat(calendar.getTime(), outFmt); calendar = null; return retu; } /** * 日期、时间格式化 * @param datestr String * 存在一定格式的日期、时间字符串,如:20041001、200410011503 * @param inFmt String * 对datestr参数格式说明,参照类说明,如:yyyyMMdd、yyyyMMddHHmm * @param outFmt String * 返回样式,参照类说明,如:yyyy年MM月dd日 * @throws ParseException 当datestr不能格式化为inFmt格式时抛出此异常 * @return String * 格式化后的日期、时间字符串,如:2004年10月01日、2004年10月01日 * <BR>输出样式outFmt非法时,使用yyyyMMdd格式输出 */ public static String getDateFormat(String datestr, String inFmt, String outFmt) throws ParseException { if (null == datestr || "".equals(datestr.trim())) { return datestr; } if (null == inFmt || "".equals(inFmt.trim())) { return datestr; } if (null == outFmt || "".equals(outFmt.trim())) { //输出样式非法 outFmt = "yyyyMMdd"; } java.util.Date inDate = getDate(datestr, inFmt); if (null == inDate) { //根据inFmt分析datestr时抛出异常 return datestr; } String retu = getDateFormat(inDate, outFmt); inDate = null; return retu; } /** * 把日期时间字符串,按inFmt样式转化为日期对象,然后格式化为默认样式yyyyMMdd * @param datestr String * 存在一定格式的日期、时间字符串,如:20041001、200410011503 * @param inFmt String * 对datestr参数格式说明,参照类说明,如:yyyyMMdd、yyyyMMddHHmm * @throws ParseException 当datestr不能格式化为inFmt格式时抛出此异常 * @return String * 格式化后的日期、时间字符串,如:20041001、20041001 */ public static String getDateFormat(String datestr, String inFmt) throws ParseException { return getDateFormat(datestr, inFmt, "yyyyMMdd"); } /** * 根据inFmt的样式,日期时间字符串转化为日期时间对象 * @param datestr String * 日期时间字符串,如:20041001、2004年10月01日 15:03 * @param format String * 对datestr参数格式说明,参照类说明,如yyyyMMdd、yyyy年MM月dd日 HH:mm * @throws ParseException 当datestr不能格式化为inFmt格式时抛出此异常 * @return Date * 日期时间对象,格式inFmt非法时,使用yyyyMMdd格式 */ public static Date getDate(String datestr, String format){ if (StringUtils.isEmpty(datestr)) { return null; } if (StringUtils.isEmpty(format)) { //inFmt非法 format = "yyyyMMdd"; } try { //依据inFmt格式把日期字符串转化为日期对象 SimpleDateFormat dateFormat = new SimpleDateFormat(format); dateFormat.setLenient(true); return dateFormat.parse(datestr); } catch (ParseException e) { throw new IllegalArgumentException(e); } } /** * 对日期时间对象进行调整,实现如昨天是几号,去年的今天星期几等. * <BR>例子: * <pre> * <blockquote> * 计算去年今天星期几 * Date date = DateUtils.addDate(new Date(),Calendar.YEAR,-1); * System.out.println(DateUtils.getDateFormat(date,"E")); * 打印60天后是什么日期,并显示为 yyyy-MM-dd 星期 * Date date = DateUtils.addDate(new Date(),Calendar.DATE,60); * System.out.println(DateUtils.getDateFormat(date,"yyyy-MM-dd E")); * </blockquote> * </pre> * @param date Date * 需要调整的日期时间对象 * @param CALENDARFIELD int * 对日期时间对象以什么单位进行调整: * <pre> * <blockquote> * 年 Calendar.YEAR * 月 Calendar.MONTH * 日 Calendar.DATE * 时 Calendar.HOUR * 分 Calendar.MINUTE * 秒 Calendar.SECOND * </blockquote> * </pre> * @param amount int * 调整数量,>0表向后调整(明天,明年),<0表向前调整(昨天,去年) * @return Date * 调整后的日期时间对象 */ public static Date addDate(Date date, int CALENDARFIELD, int amount) { if (null == date) { return date; } Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(CALENDARFIELD, amount); return calendar.getTime(); } /** * 对日期时间对象进行调整. * @param datestr String * 需要调整的日期时间字符串,它的格式为yyyyMMdd * @param CALENDARFIELD int * 对日期时间对象以什么单位进行调整 * @param amount int * 调整数量 * @throws ParseException 当datestr不能格式化为yyyyMMdd格式时抛出此异常 * @return Date * 调整后的日期时间对象 * @see #addDate(java.util.Date, int, int) */ public static Date addDate(String datestr, int CALENDARFIELD, int amount) throws ParseException { return addDate(getDate(datestr, "yyyyMMdd"), CALENDARFIELD, amount); } /** * 根据出生日期,计算出在某一个日期的年龄 * @param birthday Date * 出生日期时间对象 * @param date2 Date * 计算日期对象 * @return int * 返回date2那一天出生日期为birthday的年龄,如果birthday大于date2则返回-1 */ public static int getAge(Date birthday, Date date2) { if (null == birthday || null == date2) { return -1; } if (birthday.after(date2)) { //birthday大于date2 return -1; } int ibdYear = StringUtils.getInt(getDateFormat(birthday, "yyyy"), -1); int idate2Year = StringUtils.getInt(getDateFormat(date2, "yyyy"), -1); if (ibdYear < 0 || idate2Year < 0) { return -1; } if (ibdYear > idate2Year) { return -1; } return idate2Year - ibdYear + 1; } /** * 根据出生日期,计算出当前的年龄 * @param birthday Date * 出生日期时间对象 * @return int * 返回出生日期为birthday的年龄,如果birthday大于当前系统日期则返回-1 */ public static int getAge(Date birthday) { return getAge(birthday, new Date()); } /** * 根据出生日期,计算出当前的年龄 * @param birthdaystr String * 出生日期时间字符串,其格式一定为yyyyMMdd * @throws ParseException 当datestr不能格式化为yyyyMMdd格式时抛出此异常 * @return int * 返回出生日期为birthday的年龄,如果birthday大于当前系统日期则返回-1 */ public static int getAge(String birthdaystr) throws ParseException { return getAge(getDate(birthdaystr, "yyyyMMdd")); } }
相关推荐
资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。
wrf转mp4播放器1.1.1
内容概要:本文档详细介绍了如何在Simulink中设计一个满足特定规格的音频带ADC(模数转换器)。首先选择了三阶单环多位量化Σ-Δ调制器作为设计方案,因为这种结构能在音频带宽内提供高噪声整形效果,并且多位量化可以降低量化噪声。接着,文档展示了具体的Simulink建模步骤,包括创建模型、添加各个组件如积分器、量化器、DAC反馈以及连接它们。此外,还进行了参数设计与计算,特别是过采样率和信噪比的估算,并引入了动态元件匹配技术来减少DAC的非线性误差。性能验证部分则通过理想和非理想的仿真实验评估了系统的稳定性和各项指标,最终证明所设计的ADC能够达到预期的技术标准。 适用人群:电子工程专业学生、从事数据转换器研究或开发的技术人员。 使用场景及目标:适用于希望深入了解Σ-Δ调制器的工作原理及其在音频带ADC应用中的具体实现方法的人群。目标是掌握如何利用MATLAB/Simulink工具进行复杂电路的设计与仿真。 其他说明:文中提供了详细的Matlab代码片段用于指导读者完成整个设计流程,同时附带了一些辅助函数帮助分析仿真结果。
国网台区终端最新规范
《基于YOLOv8的智慧农业水肥一体化控制系统》(包含源码、可视化界面、完整数据集、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计
GSDML-V2.33-LEUZE-AMS3048i-20170622.xml
微信小程序项目课程设计,包含LW+ppt
微信小程序项目课程设计,包含LW+ppt
终端运行进度条脚本
幼儿园预防肺结核教育培训课件资料
python,python相关资源
《基于YOLOv8的智慧校园电动车充电桩状态监测系统》(包含源码、可视化界面、完整数据集、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计
deepseek 临床之理性软肋.pdf
SM2258XT量产工具(包含16种程序),固态硬盘量产工具使用
RecyclerView.zip
水务大脑让水务运营更智能(23页)
资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。
大众捷达轿车前轮制动器设计
《基于YOLOv8的智能工厂压缩空气泄漏检测系统》(包含源码、可视化界面、完整数据集、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计
3米-翻抛机