package net.maxt.util;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar; /**
* DATE 继承于 java.util.Date,多实现了很多方法。
* @author 沙琪玛 QQ:862990787
* May 29, 2013 9:52:51 AM
*/
public class Date extends java.util.Date { /**
*
*/
private static final long serialVersionUID = 2155545266875552658L; /**
* 功能:转换为Calendar。
* @author 沙琪玛 QQ:862990787
* Aug 21, 2013 8:58:31 AM
* @return Calendar
*/
public Calendar toCalendar() {
Calendar c = Calendar.getInstance();
c.setTime(this);
return c;
} /**
* 功能:判断日期是否和当前date对象在同一天。
* @author 沙琪玛 QQ:862990787
* Aug 21, 2013 7:15:53 AM
* @param date 比较的日期
* @return boolean 如果在返回true,否则返回false。
*/
public boolean isSameDay(Date date) {
if (date == null) {
throw new IllegalArgumentException("日期不能为null");
}
Calendar cal2 = Calendar.getInstance();
cal2.setTime(date);
return this.isSameDay(cal2);
} /**
* 功能:判断日期是否和当前date对象在同一天。
* @author 沙琪玛 QQ:862990787
* Aug 21, 2013 7:15:53 AM
* @param cal 比较的日期
* @return boolean 如果在返回true,否则返回false。
*/
public boolean isSameDay(Calendar cal) {
if (cal == null) {
throw new IllegalArgumentException("日期不能为null");
}
//当前date对象的时间
Calendar cal1 = Calendar.getInstance();
cal1.setTime(this);
return (cal1.get(Calendar.ERA) == cal.get(Calendar.ERA) &&
cal1.get(Calendar.YEAR) == cal.get(Calendar.YEAR) &&
cal1.get(Calendar.DAY_OF_YEAR) == cal.get(Calendar.DAY_OF_YEAR));
} /**
* 功能:将当前日期的秒数进行重新设置。
* @author 沙琪玛 QQ:862990787
* Jul 31, 2013 2:42:36 PM
* @param second 秒数
* @return 设置后的日期
*/
public Date setSecondNew(int second){
Calendar c = Calendar.getInstance();
c.setTime(this);
c.set(Calendar.SECOND,second);
return new Date(c.getTimeInMillis());
} /**
* 功能:将当前日期的分钟进行重新设置。
* @author 沙琪玛 QQ:862990787
* Jul 31, 2013 2:42:36 PM
* @param minute 分钟数
* @return 设置后的日期
*/
public Date setMinuteNew(int minute){
Calendar c = Calendar.getInstance();
c.setTime(this);
c.set(Calendar.MINUTE,minute);
return new Date(c.getTimeInMillis());
} /**
* 功能:将当前日期的小时进行重新设置。
* @author 沙琪玛 QQ:862990787
* Jul 31, 2013 2:42:36 PM
* @param hours 小时数 (24小时制)
* @return 设置后的日期
*/
public Date setHourNew(int hour){
Calendar c = Calendar.getInstance();
c.setTime(this);
c.set(Calendar.HOUR_OF_DAY, hour);
return new Date(c.getTimeInMillis());
} /**
* 功能:将当前日期的天进行重新设置。
* @author 沙琪玛 QQ:862990787
* Jul 31, 2013 2:42:36 PM
* @param days 某一天
* @return 设置后的日期
*/
public Date setDayNew(int day){
Calendar c = Calendar.getInstance();
c.setTime(this);
c.set(Calendar.DATE,day);
return new Date(c.getTimeInMillis());
} /**
* 功能:将当前日期的月进行重新设置。
* @author 沙琪玛 QQ:862990787
* Jul 31, 2013 2:42:36 PM
* @param months 某一月
* @return 设置后的日期
*/
public Date setMonthNew(int month){
Calendar c = Calendar.getInstance();
c.setTime(this);
c.set(Calendar.MONTH, month-1);
return new Date(c.getTimeInMillis());
} /**
* 功能:将当前日期的年进行重新设置。
* @author 沙琪玛 QQ:862990787
* Jul 31, 2013 2:42:36 PM
* @param years 某一年
* @return 设置后的日期
*/
public Date setYearNew(int year){
Calendar c = Calendar.getInstance();
c.setTime(this);
c.set(Calendar.YEAR, year);
return new Date(c.getTimeInMillis());
} /**
* 功能:得到当月有多少天。
* @author 沙琪玛 QQ:862990787
* Jul 2, 2013 4:59:41 PM
* @return int
*/
public int daysNumOfMonth(){
Calendar cal = Calendar.getInstance();
cal.setTime(this);
return cal.getActualMaximum(Calendar.DATE);
} /**
* 将yyyy-MM-dd HH:mm:ss字符串转换成日期(net.maxt.util.Date)<br/>
* @param dateStr 时间字符串
* @param 当前时间字符串的格式。
* @return net.maxt.util.Date 日期 ,转换异常时返回null。
*/
public static Date parseDate(String dateStr,SimpleDateFormat dataFormat){
try {
java.util.Date d = dataFormat.parse(dateStr);
return new Date(d.getTime());
} catch (ParseException e) {
e.printStackTrace();
return null;
}
} /**
* 将yyyy-MM-dd HH:mm:ss字符串转换成日期(net.maxt.util.Date)<br/>
* @param dateStr yyyy-MM-dd HH:mm:ss字符串
* @return net.maxt.util.Date 日期 ,转换异常时返回null。
*/
public static Date parseDate(String dateStr){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
java.util.Date d = sdf.parse(dateStr);
return new Date(d.getTime());
} catch (ParseException e) {
e.printStackTrace();
return null;
}
} /**
* 功能:计算两个时间的时间差。
* @author 沙琪玛 QQ:862990787
* May 29, 2013 2:34:08 PM
* @param time 另一个时间。
* @return Timespan 时间间隔
*/
public Timespan substract(Date time){
return new Timespan(this.getTime()-time.getTime());
} /**
* 功能:当前时间增加毫秒数。
* @author 沙琪玛 QQ:862990787
* May 29, 2013 11:26:27 AM
* @param milliseconds 正值时时间延后,负值时时间提前。
* @return Date
*/
public Date addMilliseconds(int milliseconds){
Calendar c = Calendar.getInstance();
c.setTime(this);
c.set(Calendar.MILLISECOND, c.get(Calendar.MILLISECOND)+milliseconds);
return new Date(c.getTimeInMillis());
} /**
* 功能:当前时间增加秒数。
* @author 沙琪玛 QQ:862990787
* May 29, 2013 11:26:27 AM
* @param seconds 正值时时间延后,负值时时间提前。
* @return Date
*/
public Date addSeconds(int seconds){
Calendar c = Calendar.getInstance();
c.setTime(this);
c.set(Calendar.SECOND, c.get(Calendar.SECOND)+seconds);
return new Date(c.getTimeInMillis());
} /**
* 功能:当前时间增加分钟数。
* @author 沙琪玛 QQ:862990787
* May 29, 2013 11:26:27 AM
* @param minutes 正值时时间延后,负值时时间提前。
* @return Date
*/
public Date addMinutes(int minutes){
Calendar c = Calendar.getInstance();
c.setTime(this);
c.set(Calendar.MINUTE, c.get(Calendar.MINUTE)+minutes);
return new Date(c.getTimeInMillis());
} /**
* 功能:当前时间增加小时数。
* @author 沙琪玛 QQ:862990787
* May 29, 2013 11:26:27 AM
* @param hours 正值时时间延后,负值时时间提前。
* @return Date
*/
public Date addHours(int hours){
Calendar c = Calendar.getInstance();
c.setTime(this);
c.set(Calendar.HOUR, c.get(Calendar.HOUR)+hours);
return new Date(c.getTimeInMillis());
} /**
* 功能:当前时间增加天数。
* @author 沙琪玛 QQ:862990787
* May 29, 2013 11:26:27 AM
* @param days 正值时时间延后,负值时时间提前。
* @return Date
*/
public Date addDays(int days){
Calendar c = Calendar.getInstance();
c.setTime(this);
c.set(Calendar.DATE, c.get(Calendar.DATE)+days);
return new Date(c.getTimeInMillis());
} /**
* 功能:当前时间增加月数。
* @author 沙琪玛 QQ:862990787
* May 29, 2013 11:26:27 AM
* @param months 正值时时间延后,负值时时间提前。
* @return Date
*/
public Date addMonths(int months){
Calendar c = Calendar.getInstance();
c.setTime(this);
c.set(Calendar.MONTH, c.get(Calendar.MONTH)+months);
return new Date(c.getTimeInMillis());
} /**
* 功能:当前时间增加年数。注意遇到2月29日情况,系统会自动延后或者减少一天。
* @author 沙琪玛 QQ:862990787
* May 29, 2013 11:26:27 AM
* @param years 正值时时间延后,负值时时间提前。
* @return Date
*/
public Date addYears(int years){
Calendar c = Calendar.getInstance();
c.setTime(this);
c.set(Calendar.YEAR, c.get(Calendar.YEAR)+years);
return new Date(c.getTimeInMillis());
} /**
* 得到秒。格式:56<br/>
* @return int
*/
public int secondInt() {
return Integer.parseInt(toString("ss"));
} /**
* 得到分钟。格式:56<br/>
* @return int
*/
public int minuteInt() {
return Integer.parseInt(toString("mm"));
} /**
* 得到小时。格式:23<br/>
* @return int
*/
public int hourInt() {
return Integer.parseInt(toString("HH"));
} /**
* 得到日。格式:26<br/>
* 注意:这里1日返回1,2日返回2。
* @return int
*/
public int dayInt() {
return Integer.parseInt(toString("dd"));
} /**
* 得到月。格式:5<br/>
* 注意:这里1月返回1,2月返回2。
* @return int
*/
public int monthInt() {
return Integer.parseInt(toString("MM"));
} /**
* 得到年。格式:2013
* @return int
*/
public int yearInt() {
return Integer.parseInt(toString("yyyy"));
} /**
* 得到短时间。格式:12:01
* @return String
*/
public String shortTime() {
return toString("HH:mm");
} /**
* 得到长时间。格式:12:01:01
* @return String
*/
public String longTime() {
return toString("HH:mm:ss");
} /**
* 得到今天的第一秒的时间。
* @return Date
*/
public Date dayStart() {
Calendar c = Calendar.getInstance();
c.setTime(this);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
return new Date(c.getTimeInMillis());
} /**
* 得到当前所在自然月的第一天的开始,格式为长日期格式。例如:2012-03-01 00:00:00。
* @return Date
*/
public Date monthStart(){
Calendar c=Calendar.getInstance();
String startStr= toString("yyyy-M-")+c.getActualMinimum(Calendar.DATE)+" 00:00:00";
return Date.parseDate(startStr);
} /**
* 得到今天的最后一秒的时间。
* @return Date
*/
public Date dayEnd() {
Calendar c = Calendar.getInstance();
c.setTime(this);
c.set(Calendar.HOUR_OF_DAY, 23);
c.set(Calendar.MINUTE, 59);
c.set(Calendar.SECOND, 59);
return new Date(c.getTimeInMillis());
} /**
* 根据日期得到星期几,得到数字。<br/>
* 7, 1, 2, 3, 4, 5, 6
* @return Integer 如:6
*/
public int dayOfWeekInt() {
Integer dayNames[] = { 7, 1, 2, 3, 4, 5, 6 };
Calendar calendar = Calendar.getInstance();
calendar.setTime(this);
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK) - 1;
if (dayOfWeek < 0)
dayOfWeek = 0;
return dayNames[dayOfWeek];
} /**
* 将日期转换成长日期字符串 例如:2009-09-09 01:01:01
* @return String
*/
public String toLongDate() {
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return (null == this) ? null : df.format(this);
} /**
* 将日期按照一定的格式进行格式化为字符串。<br/>
* 例如想将时间格式化为2012-03-05 12:56 ,则只需要传入formate为yyyy-MM-dd HH:mm即可。
* @param formate 格式化格式,如:yyyy-MM-dd HH:mm
* @return String 格式后的日期字符串。如果当前对象为null,则直接返回null。
*/
public String toString(String formate) {
DateFormat df = new SimpleDateFormat(formate);
return (null == this) ? null : df.format(this);
} /**
* 得到某个时间的时间戳yyyyMMddHHmmss。
* @param date 时间
* @return String 如果当前对象为null,则直接返回null。
*/
public String toTimeStamp() {
DateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
return (null == this) ? null : df.format(this);
} /**
* 将日期转换成短日期字符串,例如:2009-09-09。
* @return String ,如果当前对象为null,返回null。
*/
public String toShortDate() {
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
return (null == this) ? null : df.format(this);
} /**
* 功能:用java.util.Date进行构造。
* @author 沙琪玛 QQ:862990787
* May 29, 2013 10:59:05 AM
* @param java.util.Date date
*/
public Date(java.util.Date date) {
super(date.getTime());
} /**
* 功能:用毫秒进行构造。
* @author 沙琪玛 QQ:862990787
* May 29, 2013 10:59:05 AM
* @param timeInMillis
*/
public Date(long timeInMillis) {
super(timeInMillis);
} /**
* 功能:默认构造函数。
* @author 沙琪玛 QQ:862990787
* May 29, 2013 11:00:05 AM
*/
public Date() {
super();
} }

JAVA Date超强工具类,可直接取代util.Date使用的更多相关文章

  1. java下载文件工具类

    java下载文件工具类 package com.skjd.util; import java.io.BufferedInputStream; import java.io.BufferedOutput ...

  2. java格式处理工具类

    import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOExceptio ...

  3. Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类

    Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类 ============================== ©Copyright 蕃薯耀 20 ...

  4. 使用java的Calendar工具类获取到本月的第一天起始时间和最后一天结束时间。

    1.使用java的Calendar工具类获取到本月的第一天起始时间和最后一天结束时间. package com.fline.aic.utils; import java.text.DateFormat ...

  5. JAVA 8 日期工具类

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

  6. JavaSE-基础语法(二)-系统类(java.lang.*)和工具类(java.util.*)

    系统类(java.lang.*)和工具类(java.util.*) 一.系统类(java.lang.*) 这个包下包含java语言的核心类,如String.Math.System和Thread类等,使 ...

  7. java 解析excel工具类

      java 解析excel工具类 CreateTime--2018年3月5日16:48:08 Author:Marydon ReadExcelUtils.java import java.io.Fi ...

  8. java 邮件发送工具类【来源网络自己已经实际应用】

    最近在做一个Java发送邮件的工具类,现在分享一下完整的代码 首先需要java邮件的包javax.mail-1.5.4.jar 之前因为链接给错了,很不好意思,现在重新发一次. 包在这里可以下载htt ...

  9. Java 日期格式工具类

    Java 日期格式工具类 方法如下 DateUtil 类 import java.text.DateFormat; import java.text.ParseException; import ja ...

随机推荐

  1. Jmeter中的变量(三)

    变量(Variables) Jmeter中的变量(参数化)目的是为了提供改变请求变化的机制.比如登录场景,一般不能使用同一个账号做并发操作. 变量的特点 1) JMeter变量对于测试线程而言是局部变 ...

  2. js excel导出 前端实现(转载)

    本文为转载,本人亲测可用,感谢原作者,原文在这里. 一.由于公司项目需要,需要将表格数据导出为EXCEL表格数据. 环境React+Ant Design 二.安装插件js-export-excel   ...

  3. TeX Live & TeXstudio 安装手记

    数据库课上又看到了那位用 beamer 做 slides 的师兄,想到自己一拖再拖的LaTeX入门,决定赶快动手装个环境再说~在经过一番搜索和研究之后决定先在 windows 底下试用,选择 TeX ...

  4. MIAC HW2

    MIAC的第二次作业,翻了一些fashion网站找了点灵感,重新设计了一下UI. 因为给的html里有nav之类的HTML5新特性,所以索性就不管IE的兼容了.chrome下的效果: FF下也差不多. ...

  5. GUC-4 CopyOnWriteArrayList/CopyOnWriteArraySet

    /* * CopyOnWriteArrayList/CopyOnWriteArraySet : “写入并复制” * 注意:添加操作多时,效率低,因为每次添加时都会进行复制,开销非常的大.并发迭代操作多 ...

  6. js对小数的操作

    1.丢弃小数部分,保留整数部分 js:parseInt(7/2) 2.向上取整,有小数就整数部分加1 js: Math.ceil(7/2) 3,四舍五入. js: Math.round(7/2) 4, ...

  7. C#窗体内嵌外部程序(cmd.exe)的显示【转载】

    [DllImport("User32.dll ", EntryPoint = "SetParent")] private static extern IntPt ...

  8. Knockout介绍

    Knockout.js是什么? Knockout是一款很优秀的JavaScript库,它可以帮助你仅使用一个清晰整洁的底层数据模型(data model)即可创建一个富文本且具有良好的显示和编辑功能的 ...

  9. pip安装报错解决

    使用pip安装docker-compose时报 unsupported operand type(s) for -=: 'Retry' and 'int' 错误,经过一番google后,发现使用升级s ...

  10. POJ 1976 A Mini Locomotive

    $dp$. 要求选择$3$个区间,使得区间和最大.$dp[i][j]$表示前$i$个数中选择了$j$段获得的最大收益. #include <cstdio> #include <cma ...