package com.javapandeng.utils;
import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
/**
* 日期格式化类
*/
public class DateUtil extends java.util.Date {
private static final long serialVersionUID = 1L;
private static final DateFormat datetimeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
private static final DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
private static final String strFormat1 = "yyyy-MM-dd HH:mm";
/**
M 年中的月份 Month July; Jul; 07
w 年中的周数 Number 27
W 月份中的周数 Number 2
D 年中的天数 Number 189
d 月份中的天数 Number 10
F 月份中的星期 Number 2
E 星期中的天数 Text Tuesday; Tue
a Am/pm 标记 Text PM
H 一天中的小时数(0-23) Number 0
k 一天中的小时数(1-24) Number 24
K am/pm 中的小时数(0-11) Number 0
h am/pm 中的小时数(1-12) Number 12
m 小时中的分钟数 Number 30
s 分钟中的秒数 Number 55
S 毫秒数 Number 978
z 时区 General time zone Pacific Standard Time; PST; GMT-08:00
Z 时区 RFC 822 time zone -0800
*/
/**
* 构造函数
*/
public DateUtil() {
super(getSystemDate().getTime().getTime());
}
/**
* 当前时间
*
* @return 时间Timestamp
*/
public java.sql.Timestamp parseTime() {
return new java.sql.Timestamp(this.getTime());
}
/**
* 将Date类型转换为字符串 yyyy-MM-dd HH:mm:ss
*
* @param Date
* @return String
*/
public static String format(Date date) {
return format(date, null);
}
/**
* 将Date类型转换为字符串
*
* @param Date
* @param pattern 字符串格式
* @return String
*/
public static String format(Date date, String pattern) {
if (date == null) {
return "";
} else if (pattern == null || pattern.equals("") || pattern.equals("null")) {
return datetimeFormat.format(date);
} else {
return new SimpleDateFormat(pattern).format(date);
}
}
/**
* 将Date类型转换为字符串 yyyy-MM-dd
*
* @param Date
* @return String
*/
public static String formatDate(Date date) {
if (date == null) {
return "";
}
return dateFormat.format(date);
}
/**
* 将字符串转换为Date类型
*
* @param sDate yyyy-MM-dd HH:mm:ss
* @return
*/
public static Date convert(String sDate) {
try {
if (sDate != null) {
if (sDate.length() == 10) {
return dateFormat.parse(sDate);
} else if (sDate.length() == 19) {
return datetimeFormat.parse(sDate);
}
}
} catch (ParseException pe) {
}
return convert(sDate, null);
}
/**
* 将字符串转换为Date类型
*
* @param sDate
* @param pattern 格式
* @return
*/
public static Date convert(String sDate, String pattern) {
Date date = null;
try {
if (sDate == null || sDate.equals("") || sDate.equals("null")) {
return null;
} else if (pattern == null || pattern.equals("") || pattern.equals("null")) {
return datetimeFormat.parse(sDate);
} else {
return new SimpleDateFormat(pattern).parse(sDate);
}
} catch (ParseException pe) {
}
return date;
}
/**
* String转换为Date
*
* @param sDate 日期"yyyy-MM-dd"
* @return 日期Date
*/
public static Date convertDate(String dateStr) {
return convert(dateStr, "yyyy-MM-dd");
}
/**
* String转换为Timestamp
*
* @param sDate 日期 "yyyy-MM-dd" / "yyyy-MM-dd HH:mm:ss"
* @return 日期Timestamp
*/
public static Timestamp convertTimestamp(String sDate) {
if (sDate.length() == 10) {
sDate = sDate + " 00:00:00";
}
if (sDate.length() == 16) {
sDate = sDate + ":00";
}
return Timestamp.valueOf(sDate);
}
/**
* Date转换为Timestamp
*/
public static Timestamp convert(Date date) {
return new Timestamp(date.getTime());
}
/**
* 取当前日期(yyyy-mm-dd)
*
* @return 时间Timestamp
*/
public static String getTodayDate() {
return formatDate(new Date());
}
/**
* 取当前日期(yyyy-mm-dd hh:mm:ss)
*
* @return 时间Timestamp
*/
public static String getTodayDateTime() {
return format(new Date());
}
/**
* 取得n分钟后的时间
*
* @param date 日期
* @param afterMins
* @return 时间Timestamp
*/
public static Date getAfterMinute(Date date, long afterMins) {
if (date == null)
date = new Date();
long longTime = date.getTime() + afterMins * 60 * 1000;
return new Date(longTime);
}
/**
* add by yinshengming start 2016-4-7
* 取得n秒后的时间
*
* @param date 日期
* @param afterMins
* @return 时间Timestamp
*/
public static Date getAfterSecond(Date date, long afterMins) {
if (date == null)
date = new Date();
long longTime = date.getTime() + afterMins * 1000;
return new Date(longTime);
}
// public static void main(String[] arg) {
// System.err.println(format((new Date())));
// System.err.println(format(getAfterMinute(new Date(), 3)));
// }
/**
* 取得指定日期几天后的日期
*
* @param date 日期
* @param afterDays 天数
* @return 日期
*/
public static Date getAfterDay(Date date, int afterDays) {
if (date == null)
date = new Date();
GregorianCalendar cal = new GregorianCalendar();
cal.setTime(date);
cal.add(java.util.Calendar.DATE, afterDays);
return cal.getTime();
}
/**
* 取得指定日期几天后的日期
*
* @param sDate 日期 yyyy-MM-dd
* @param afterDays 天数
* @return 日期
*/
public static String getAfterDay(String sDate, int afterDays) {
Date date = convertDate(sDate);
date = getAfterDay(date, afterDays);
return formatDate(date);
}
/**
* 取得指定日期几天前的日期
*
* @param date 日期
* @param beforeDays 天数(大于0)
* @return 日期
*/
public static Date getBeforeDay(Date date, int beforeDays) {
if (date == null)
date = new Date();
GregorianCalendar cal = new GregorianCalendar();
cal.setTime(date);
cal.add(java.util.Calendar.DATE, 0 - Math.abs(beforeDays));
return cal.getTime();
}
/**
* 取得指定日期几天前的日期
*
* @param sDate 日期 yyyy-MM-dd
* @param beforeDays 天数(大于0)
* @return 日期
*/
public static String getBeforeDay(String sDate, int beforeDays) {
Date date = convertDate(sDate);
date = getBeforeDay(date, beforeDays);
return formatDate(date);
}
/**
* 获得几个月后的日期
*
* @param date 日期
* @param afterMonth 月数
* @return 日期Date
不走小道
- 粉丝: 3383
- 资源: 5051
最新资源
- 电池管理系统BMS,BMS菊花链通信系统,主板+从板 S32K144+LTC6804 LTC6811 LTC6813,原理图+源代码
- PMSM永磁同步电机Pi控制,滑模控制simulink模型 无位置传感器模型
- 关键词:光伏聚类 K-means聚类 时间序列 编程语言:matlab 主题:基于k-means算法的光伏时间序列聚类 主要内容: 本代码研究大量随机场景下光伏序列聚类与削减问题,首先,生成大量
- 关键词:储能容量优化 储能配置 微网 编程语言:matlab 主题:基于混合整数规划方法的微网电池储能容量优化配置 主要内容: 本代码目的为实现微电网内电池容量的优化配置,目标函数为配置过程中整体
- 信捷plc与台达变频器modbus rtu通讯程序 程序有注释 触摸屏是tg765,plc是xc3、xc5都可以,其他型号没试过,变频器是vfd-m
- FX5u控制4个伺服,一个完整的项目 程序用 标签分层,说明了定位控制中的公共参数设定、回原点、JOG手动、绝对定位、相对定位、控制等部分,威纶程序报警界面.多个机种选择,手动,自动,暂停,包括有:
- 遗传算法,分布式电源选址定容 以IEEE33节点系统为算例,以年最低综合成本为目标函数,四个约束条件,用改进自适应遗传算法进行定容选址 最终得出分布式电源接入位置及在该位置处接入容量,迭代图,以及
- ABB机器人C#上位机,操作机器人动作及读写机器人数据 ABB机器人操作类,程序包含运行数据记录,设备报警信息显示,项目比较完整,适合自己做二次开发
- 强化学习算法,DDPG算法,在simulink或MATLAB中编写强化学习算法,基于强化学习的自适应pid,基于强化学习的模型预测控制算法,基于RL的MPC,Reinforcement learnin
- 双有源桥(DAB)psim simulink闭环控制仿真,SPS DPS TPS控制均可,图中显示了sps控制的负载阶跃响应全新
- 模型预测电流控制+MRAS参数辨识
- 在线考试系统,前后端不离分离,我的主页还有另一个前后端分离的 ,可远程帮忙部署调试哦 技术 * 前端 * Html Css JavaScript * Bootstrap * jQuery
- 一个磷酸铁锂体系电池comsol模型 电化学热耦合模型 可做容量衰减,极化,老化,电势降等等 参数已配置,电化学行为分布及生热研究 设及技术专业
- 三菱plc标准小程序,含昆仑通态触摸屏程序(触摸屏附带配方功能,项目功能完整,该程序为标准框架,故障,复位,自动,手动,,轴定回原点定位功能,程序结构清晰,构架适用所有项目,有完整的地址分配
- 基于51单片机的温度控制直流电机转速proteus仿真设计,有程序工程文件以及参考代码,需 基于单片机的温度控制系统 达到一定温度启动电机,电机转速随温 度升高而提高,低于一定温度电机停止转动,资料
- 轮毂电机分布式驱动电动汽车,转向电机失效稳定性控制 Matlab Simulink 软件使用:Matlab Simulink 适用场景:轮毂电机分布式驱动电动汽车部分转向电机失效稳定性控制(单个转向轮
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈