- 浏览: 92584 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (99)
- JAVA (11)
- oracle (11)
- Hibernate (10)
- Utils (7)
- Struts (6)
- SQL (6)
- spring (6)
- Jquery (9)
- Exception (3)
- tomcat (3)
- SVN (1)
- Ajax (2)
- DOS (1)
- windows (1)
- Interview (1)
- Url (2)
- Jstl (1)
- Junit (1)
- PDI (1)
- JSR303 (0)
- BlogUrl (1)
- Maven (2)
- Date Plugin (0)
- Camera (1)
- 笔记 (1)
- doubleball (1)
- CSS (1)
- SSH (1)
- Mybatis (1)
- spring security (0)
- 参考书 (1)
- 在线软件 (1)
- VMware (1)
最新评论
package com.hnmmli.g2common.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.TimeZone;
import org.apache.commons.lang.UnhandledException;
/**
*
* @Company : hiaas.com
* @comment
* 说明:日期时间相关的一些方法
* @author yuzhizhong
* @create 2014年4月19日 上午9:24:22
*/
public class DateHelper {
public static final long SECOND = 1000;
public static final long MINITE = SECOND * 60;
public static final long HOUR = MINITE * 60;
public static final long DAY = HOUR * 24;
public static final String TIME_MIN = "00:00:00";
public static final String TIME_MAX = "23:59:59";
public static final String HOUR_MINITE = "HH:mm";
public static final SimpleDateFormat dateSdf = new SimpleDateFormat("yyyyMMdd");
public static final SimpleDateFormat timeSdf = new SimpleDateFormat("HHmmss");
public static final SimpleDateFormat timeSdf2 = new SimpleDateFormat("HHmm");
/**
* 说明:将DateTime中的Date转换成Integer
* @param date
* @return
*/
public static final int getDateInt(Date date){
return Integer.valueOf(dateSdf.format(date));
}
/**
* 说明:将DateTime中的Time转换成Integer
* @param date
* @return
*/
public static final int getTimeInt(Date date){
return Integer.valueOf(timeSdf.format(date));
}
/**
* 说明:将DateTime中的Time转换成Integer
* @param date
* @return
*/
public static final int getTime2Int(Date date){
return Integer.valueOf(timeSdf2.format(date));
}
// order is like this because the SimpleDateFormat.parse does not fail with
// exception
// if it can parse a valid date out of a substring of the full string given
// the mask
// so we have to check the most complete format first, then it fails with
// exception
private static final String[] RFC822_MASKS = {
"EEE, dd MMM yy HH:mm:ss z",
"EEE, dd MMM yy HH:mm z",
"dd MMM yy HH:mm:ss z",
"dd MMM yy HH:mm z"
};
// order is like this because the SimpleDateFormat.parse does not fail with
// exception
// if it can parse a valid date out of a substring of the full string given
// the mask
// so we have to check the most complete format first, then it fails with
// exception
private static final String[] W3CDATETIME_MASKS = {
"yyyy-MM-dd'T'HH:mm:ss.SSSz",
"yyyy-MM-dd't'HH:mm:ss.SSSz",
"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'",
"yyyy-MM-dd't'HH:mm:ss.SSS'z'",
"yyyy-MM-dd'T'HH:mm:ssz",
"yyyy-MM-dd't'HH:mm:ssz",
"yyyy-MM-dd'T'HH:mm:ss'Z'",
"yyyy-MM-dd't'HH:mm:ss'z'",
"yyyy-MM-dd'T'HH:mmz", // together with logic in the parseW3CDateTime they
"yyyy-MM'T'HH:mmz", // handle W3C dates without time forcing them to be GMT
"yyyy'T'HH:mmz",
"yyyy-MM-dd't'HH:mmz",
"yyyy-MM-dd'T'HH:mm'Z'",
"yyyy-MM-dd't'HH:mm'z'",
"yyyy-MM-dd",
"yyyy-MM",
"yyyy"
};
private static final String[] patterns_masks = {
"yyyy-MM-dd HH:mm:ss,SSS",
"yyyy-MM-dd HH:mm:ss.SSS",
"yyyy-MM-dd HH:mm:ss",
"yyyy-MM-dd HH:mm",
"yyyy-MM-dd",
"yyyy/MM/dd HH:mm:ss,SSS",
"yyyy/MM/dd HH:mm:ss.SSS",
"yyyy/MM/dd HH:mm:ss",
"yyyy/MM/dd HH:mm",
"yyyy/MM/dd",
"yyyyMMddHHmmss",
"yyyyMMdd",
"hh:mm:ss,SSS",
"hh:mm:ss.SSS",
"hh:mm:ss"
};
/**
* 修正 new Date() 函数返回的时间是北京时间.
* @since 2008-10-31
*/
public static void fixedChinaTimeZone() {
TimeZone userTimeZone = TimeZone.getTimeZone(System.getProperty("user.timezone"));
TimeZone chinaTimeZone = TimeZone.getTimeZone("Asia/Shanghai");
if (!chinaTimeZone.hasSameRules(userTimeZone)) {
TimeZone.setDefault(chinaTimeZone);
System.out.println("fixed current date:" + format(new Date(), "yyyy-MM-dd HH:mm:ss"));
}
}
/**
* get date string use pattern
*
* @param pattern
* see {@link java.text.SimpleDateFormat}
* @return a date string
*/
public static String format(String pattern) {
return format(new Date(), pattern);
}
/**
* get date string use pattern
*
* @param pattern
* see {@link java.text.SimpleDateFormat}
* @return a date string
*/
public static String format(Date date, String pattern) {
SimpleDateFormat dateFormater = new SimpleDateFormat(pattern);
//dateFormater.setTimeZone(TimeZone.getTimeZone("GMT+8")); // 2008-02-22 fixed by subchen
return dateFormater.format(date);
}
/**
* get current date and time string
*
* @return a local datetime string
*/
public static String getNowStr() {
return format(new Date(), "yyyy-MM-dd HH:mm:ss");
}
/**
* get current date string
*
* @return a local date string
*/
public static String getDateStr() {
return format(new Date(), "yyyy-MM-dd");
}
/**
* get current time string
*
* @return a local time string
*/
public static String getTimeStr() {
return format(new Date(), "HH:mm:ss");
}
/**
* @since 2008-01-02
*/
public static Calendar getCalendar(long millis) {
Calendar c = Calendar.getInstance();
c.setTimeInMillis(millis);
return c;
}
/**
* @since 2008-01-02
*/
public static Calendar getCalendar(Date date) {
Calendar c = Calendar.getInstance();
c.setTime(date);
return c;
}
/**
* @since 2008-01-02
*/
public static Date add(Date date, int field, int diff) {
Calendar c = getCalendar(date);
c.add(field, diff);
return c.getTime();
}
/**
* @since 2008-01-02
*/
public static Date add(int field, int diff) {
return add(new Date(), field, diff);
}
/**
* 得到与当前时间相差 diff 年的时间
*/
public static Date nextYears(int diff) {
return add(new Date(), Calendar.YEAR, diff);
}
/**
* 得到与当前时间相差 diff 年的时间
*/
public static Date nextYears(Date date, int diff) {
return add(date, Calendar.YEAR, diff);
}
/**
* 得到与当前时间相差 diff 年的时间 必须使用yyyy-MM-dd HH:mm:ss格式
*/
public static String nextYears(String sDate, int diff) {
return format(nextYears(parse(sDate), diff), "yyyy-MM-dd HH:mm:ss");
}
/**
* 得到与当前时间相差 diff 月的时间
*/
public static Date nextMonths(int diff) {
return add(new Date(), Calendar.MONTH, diff);
}
/**
* 得到与当前时间相差 diff 月的时间
*/
public static Date nextMonths(Date date, int diff) {
return add(date, Calendar.MONTH, diff);
}
/**
* 得到与当前时间相差 diff 月的时间 必须使用yyyy-MM-dd HH:mm:ss格式
*/
public static String nextMonths(String sDate, int diff) {
return format(nextMonths(parse(sDate), diff), "yyyy-MM-dd HH:mm:ss");
}
/**
* 得到与当前时间相差 diff 天的时间
*/
public static Date nextDays(int diff) {
return add(new Date(), Calendar.DATE, diff);
}
/**
* 得到与当前时间相差 diff 天的时间
*/
public static Date nextDays(Date date, int diff) {
return add(date, Calendar.DATE, diff);
}
/**
* 得到与当前时间相差 diff 天的时间 必须使用yyyy-MM-dd HH:mm:ss格式
*/
public static String nextDays(String sDate, int diff) {
return format(nextDays(parse(sDate), diff), "yyyy-MM-dd HH:mm:ss");
}
/**
* 得到与当前时间相差 diff 小时的时间
*/
public static Date nextHours(int diff) {
return add(new Date(), Calendar.HOUR, diff);
}
/**
* 得到与当前时间相差 diff 小时的时间
*/
public static Date nextHours(Date date, int diff) {
return add(date, Calendar.HOUR, diff);
}
/**
* 得到与当前时间相差 diff 小时的时间 必须使用yyyy-MM-dd HH:mm:ss格式
*/
public static String nextHours(String sDate, int diff) {
return format(nextHours(parse(sDate), diff), "yyyy-MM-dd HH:mm:ss");
}
/**
* 得到与当前时间相差 diff 分的时间
*/
public static Date nextMinutes(int diff) {
return add(new Date(), Calendar.MINUTE, diff);
}
/**
* 得到与当前时间相差 diff 分的时间
*/
public static Date nextMinutes(Date date, int diff) {
return add(date, Calendar.MINUTE, diff);
}
/**
* 得到与当前时间相差 diff 分的时间 必须使用yyyy-MM-dd HH:mm:ss格式
*/
public static String nextMinutes(String sDate, int diff) {
return format(nextMinutes(parse(sDate), diff), "yyyy-MM-dd HH:mm:ss");
}
/**
* 得到与当前时间相差 diff 秒的时间
*/
public static Date nextSeconds(int diff) {
return add(new Date(), Calendar.SECOND, diff);
}
/**
* 得到与当前时间相差 diff 秒的时间
*/
public static Date nextSeconds(Date date, int diff) {
return add(date, Calendar.SECOND, diff);
}
/**
* 得到与当前时间相差 diff 秒的时间 必须使用yyyy-MM-dd HH:mm:ss格式
*/
public static String nextSeconds(String sDate, int diff) {
return format(nextSeconds(parse(sDate), diff), "yyyy-MM-dd HH:mm:ss");
}
/**
* 清除时间,得到日期
* @since 2007-12-10
*/
public static Date clearTime(Date date) {
Calendar c = Calendar.getInstance();
c.setTime(date);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
return c.getTime();
}
/**
* 清除时间,得到日期
* @since 2007-12-10
*/
public static Date clearDate(Date date) {
Calendar c = Calendar.getInstance();
c.setTime(date);
c.set(Calendar.YEAR, 0);
c.set(Calendar.MONTH, 0);
c.set(Calendar.DATE, 0);
return c.getTime();
}
/**
* 计算 d1 - d2 的天数差
* @since 2007-12-10
*/
public static long diffDays(Date d1, Date d2) {
d1 = clearTime(d1);
d2 = clearTime(d2);
return (d1.getTime() - d2.getTime()) / (24 * 60 * 60 * 1000);
}
/**
* 计算 d1 - d2 的毫秒差
* @since 2007-12-10
*/
public static long diffMillis(Date d1, Date d2) {
return d1.getTime() - d2.getTime();
}
/**
* 计算 d1 - d2 的秒差
* @since 2007-12-10
*/
public static long diffSeconds(Date d1, Date d2) {
return (d1.getTime() - d2.getTime())/1000;
}
/**
* 得到 Calendar 类中的 Field Value.
* @see java.util.Calendar
* @since 2007-12-10
*/
public static int getCalendarField(Date date, int field) {
Calendar c = Calendar.getInstance();
c.setTime(date);
return c.get(field);
}
/**
* 得到当前时间
*/
public static Timestamp getTimestamp() {
return new Timestamp(System.currentTimeMillis());
}
public static Timestamp getTimestamp(Date date) {
return date == null ? null : new Timestamp(date.getTime());
}
/**
* 用指定的格式解析日期时间.
*
* @param datetime
* 时间字符串
* @param pattern
* see {@link java.text.SimpleDateFormat}
* @throws UnhandledException
*/
public static Date parse(String datetime, String pattern) {
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
sdf.setLenient(true);
ParsePosition pp = new ParsePosition(0);
Date d = sdf.parse(datetime, pp);
if (pp.getIndex() != datetime.length()) {
d = null;
}
return d;
}
/**
* Parses a Date out of a string using an array of masks. <p/> It uses the
* masks in order until one of them succedes or all fail. <p/>
*
* @param masks
* array of masks to use for parsing the string
* @param sDate
* string to parse for a date.
* @return the Date represented by the given string using one of the given
* masks. It returns <b>null</b> if it was not possible to parse
* the the string with any of the masks.
*/
private static Date parseUsingMask(String[] masks, String sDate) {
sDate = (sDate != null) ? sDate.trim() : null;
ParsePosition pp = null;
Date d = null;
for (int i = 0; d == null && i < masks.length; i++) {
DateFormat df = new SimpleDateFormat(masks[i]);
// df.setLenient(false);
df.setLenient(true);
try {
pp = new ParsePosition(0);
d = df.parse(sDate, pp);
if (pp.getIndex() != sDate.length()) {
d = null;
}
// System.out.println("pp["+pp.getIndex()+"]
// s["+sDate+"m["+masks[i]+"] d["+d+"]");
} catch (Exception e) {
// System.out.println("s: "+sDate+" m: "+masks[i]+" d: "+null);
// try next pattern
}
}
return d;
}
/**
* Parses a Date out of a String with a date in RFC822 format. <p/> It
* parsers the following formats:
* <ul>
* <li>"EEE, dd MMM yyyy HH:mm:ss z"</li>
* <li>"EEE, dd MMM yyyy HH:mm z"</li>
* <li>"EEE, dd MMM yy HH:mm:ss z"</li>
* <li>"EEE, dd MMM yy HH:mm z"</li>
* <li>"dd MMM yyyy HH:mm:ss z"</li>
* <li>"dd MMM yyyy HH:mm z"</li>
* <li>"dd MMM yy HH:mm:ss z"</li>
* <li>"dd MMM yy HH:mm z"</li>
* </ul>
* <p/> Refer to the java.text.SimpleDateFormat javadocs for details on the
* format of each element. <p/>
*
* @param sDate
* string to parse for a date.
* @return the Date represented by the given RFC822 string. It returns
* <b>null</b> if it was not possible to parse the given string
* into a Date.
*
*/
public static Date parseRFC822(String sDate) {
int utIndex = sDate.indexOf(" UT");
if (utIndex > -1) {
String pre = sDate.substring(0, utIndex);
String post = sDate.substring(utIndex + 3);
sDate = pre + " GMT" + post;
}
return parseUsingMask(RFC822_MASKS, sDate);
}
/**
* Parses a Date out of a String with a date in W3C date-time format. <p/>
* It parsers the following formats:
* <ul>
* <li>"yyyy-MM-dd'T'HH:mm:ssz"</li>
* <li>"yyyy-MM-dd'T'HH:mmz"</li>
* <li>"yyyy-MM-dd"</li>
* <li>"yyyy-MM"</li>
* <li>"yyyy"</li>
* </ul>
* <p/> Refer to the java.text.SimpleDateFormat javadocs for details on the
* format of each element. <p/>
*
* @param sDate
* string to parse for a date.
* @return the Date represented by the given W3C date-time string. It
* returns <b>null</b> if it was not possible to parse the given
* string into a Date.
*
*/
public static Date parseW3CDateTime(String sDate) {
// if sDate has time on it, it injects 'GTM' before de TZ displacement
// to
// allow the SimpleDateFormat parser to parse it properly
int tIndex = sDate.indexOf("T");
if (tIndex > -1) {
if (sDate.endsWith("Z")) {
sDate = sDate.substring(0, sDate.length() - 1) + "+00:00";
}
int tzdIndex = sDate.indexOf("+", tIndex);
if (tzdIndex == -1) {
tzdIndex = sDate.indexOf("-", tIndex);
}
if (tzdIndex > -1) {
String pre = sDate.substring(0, tzdIndex);
int secFraction = pre.indexOf(",");
if (secFraction > -1) {
pre = pre.substring(0, secFraction);
}
String post = sDate.substring(tzdIndex);
sDate = pre + "GMT" + post;
}
} else {
sDate += "T00:00GMT";
}
return parseUsingMask(W3CDATETIME_MASKS, sDate);
}
/**
* Parses a Date out of a String with a date in W3C date-time format or in a
* RFC822 format or in a humpic-default format. <p/> 用尝试多种格式解析日期时间,
* 修改自:http://www.koders.com/java/fidDBC85D14D02AA458CE8B8A25256E176EAC6EA748.aspx
* <p>
*
* @param sDate
* string to parse for a date.
* @return the Date represented by the given W3C date-time string. It
* returns <b>null</b> if it was not possible to parse the given
* string into a Date.
*/
public static Date parse(String sDate) {
Date d = parseW3CDateTime(sDate);
if (d == null) {
d = parseRFC822(sDate);
}
if (d == null) {
d = parseUsingMask(patterns_masks, sDate);
}
if (d == null) {
try {
d = DateFormat.getInstance().parse(sDate);
} catch (ParseException e) {
d = null;
}
}
return d;
}
/**
* create a RFC822 representation of a date. <p/> Refer to the
* java.text.SimpleDateFormat javadocs for details on the format of each
* element. <p/>
*
* @param date
* Date to parse
* @return the RFC822 represented by the given Date It returns <b>null</b>
* if it was not possible to parse the date.
*/
public static String formatRFC822(Date date) {
SimpleDateFormat dateFormater = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss 'GMT'");
dateFormater.setTimeZone(TimeZone.getTimeZone("GMT"));
return dateFormater.format(date);
}
/**
* create a W3C Date Time representation of a date. <p/> Refer to the
* java.text.SimpleDateFormat javadocs for details on the format of each
* element. <p/>
*
* @param date
* Date to parse
* @return the W3C Date Time represented by the given Date It returns
* <b>null</b> if it was not possible to parse the date.
*/
public static String formatW3CDateTime(Date date) {
SimpleDateFormat dateFormater = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
dateFormater.setTimeZone(TimeZone.getTimeZone("GMT"));
return dateFormater.format(date);
}
/**
*
* 说明:获得两个时间的天数
* @param d1 开始时间
* @param d2 结束时间
* @return
*/
public static int getDays(Date d1,Date d2) {
return (int) ((d2.getTime() - d1.getTime()) / (3600L * 1000 * 24));
}
/**
*
* 说明:获得两个时间的小时数
* @param d1 开始时间
* @param d2 结束时间
* @return
*/
public static int getHours(Date d1,Date d2) {
return (int) ((d2.getTime() - d1.getTime()) / (3600L * 1000));
}
public static String formatDate(Date date) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy 年 MM 月 dd 日");
return sdf.format(date);
}
public static String formatTime(Date date) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
return sdf.format(date);
}
public static String formatTimeMonth(Date date) {
SimpleDateFormat sdf = new SimpleDateFormat("MM月dd日");
return sdf.format(date);
}
public static String formatTime2(Date date) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sdf.format(date);
}
public static String getYear(Date date) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
return sdf.format(date);
}
public static Date getMaxTodayDate(){
String todayDateStr = format(new Date(), "yyyy-MM-dd 23:59:59");
return parse(todayDateStr, "yyyy-MM-dd HH:mm:ss");
}
public static Date getMinTodayDate() {
String todayDateStr = format(new Date(), "yyyy-MM-dd 00:00:00");
return parse(todayDateStr, "yyyy-MM-dd HH:mm:ss");
}
public static Date getMaxTodayDate(Date date){
String todayDateStr = format(date, "yyyy-MM-dd 23:59:59");
return parse(todayDateStr, "yyyy-MM-dd HH:mm:ss");
}
public static Date getMinTodayDate(Date date) {
String todayDateStr = format(date, "yyyy-MM-dd 00:00:00");
return parse(todayDateStr, "yyyy-MM-dd HH:mm:ss");
}
public static Date getCurrentTodayDate(Date date){
String todayDateStr = format(date, "yyyy-MM-dd HH:mm:ss");
return parse(todayDateStr, "yyyy-MM-dd HH:mm:ss");
}
public static void main(String[] args) {
System.out.println(DateHelper.format(new Date(), "yyyyMMddHHmm"));
System.out.println(DateHelper.getYear(new Date()));
//System.out.println(DateHelper.parse(datetime, pattern));
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("测试下: "+DateHelper.diffDays(DateHelper.parse("2011-09-07 23:36:30"), new Date()));
System.out.println("测试下: "+DateHelper.diffDays(DateHelper.parse("2011-10-22 23:36:30"), new Date()));
Date t = DateHelper.parse("2009-03-04");
System.out.println(sdf.format(t));
Date d = nextWorkDays(new Date(), 3);
System.out.println("date==================="+sdf.format(d));
System.out.println("date==================="+sdf.format(DateHelper.nextDays(7)));
//nextDays("2011-03-25",)
String time = "01:20";
System.out.println(DateHelper.getTime2Int(DateHelper.parse(time, "HH:mm")));
//System.out.println(DateHelper.f);
System.out.println("date==================="+diffDays(parse("2011-09-01"),new Date()));
StringBuffer sb = new StringBuffer("");
for(int x = 9; x < 19;x++) {
for(int i = 0;i < 60;i++) {
sb.append("\"");
if(x < 10) sb.append("0");
sb.append(x).append(":");
if(i < 10) sb.append("0");
sb.append(i).append("\",");
}
}
System.out.println(sb.toString());
}
/**
*
* 说明:返回当前的diff个工作日后的时间--暂时只排除周六周日
* sunday-1 thursday-5 saturday-7
* @param date
* @param diff
* @return
*/
public static Date nextWorkDays(Date date, int diff) {
//得到当前的时间是星期几
Calendar c = Calendar.getInstance();
c.setTime(date);
Integer dayOfWeek = c.get(Calendar.DAY_OF_WEEK);
int perDays = 0;
if(!dayOfWeek.equals(1)&&!dayOfWeek.equals(7)) {
perDays = 7-dayOfWeek;
}
diff = diff-perDays;
int allDiffDays = 0;
if(diff > 0) {
int numOfWeek = diff/5;
int restDays = diff%5;
allDiffDays = numOfWeek*7+restDays;
if(dayOfWeek.equals(1)) {
allDiffDays = allDiffDays+1;
} else {
allDiffDays = allDiffDays+2+perDays;
}
} else {
return nextDays(date, diff+perDays);
}
return nextDays(date, allDiffDays);
}
/**
* 得到本周周一
* @param w 0: 表示为本周,-1:表示为上周 ,1:表示为下周,以此类推
* @return yyyy-MM-dd
*/
public static String getMondayOfThisWeek(int w) {
Calendar c = Calendar.getInstance();
int dayofweek = c.get(Calendar.DAY_OF_WEEK) - 1;
if (dayofweek == 0)
dayofweek = 7;
c.add(Calendar.DATE, -dayofweek + 1 + 7 * w);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return sdf.format(c.getTime());
}
/**
*得到本周周日
* @param w 0: 表示为本周,-1:表示为上周 ,1:表示为下周,以此类推
* @return yyyy-MM-dd
*/
public static String getSundayOfThisWeek(int w) {
Calendar c = Calendar.getInstance();
int dayofweek = c.get(Calendar.DAY_OF_WEEK) - 1;
if (dayofweek == 0)
dayofweek = 7;
c.add(Calendar.DATE, -dayofweek + 7 + 7 * w);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return sdf.format(c.getTime());
}
/**
* 得到本月最后一天
* @param dt 某个月的某一天
* @return
*/
public static String getLastDateOfMonth(Date dt) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
cal.setTime(dt);
int days = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
cal.set(Calendar.DAY_OF_MONTH, days);
String result = format.format(cal.getTime());
//System.out.println("一个月最后一天" + result);
return result;
}
/**
* 得到本月第一天
* @param dt 某个月的某一天
* @return
*/
public static String getFristDateOfMonth(Date dt) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
cal.setTime(dt);
int days = cal.getActualMinimum(Calendar.DAY_OF_MONTH);
cal.set(Calendar.DAY_OF_MONTH, days);
String result = format.format(cal.getTime());
//System.out.println("一个月第一天" + result);
return result;
}
/**
* 以YYYY-MM-DD HH:MM:SS格式返回系统日期时间
*
* @return 系统日期时间 add by zg 2003-12-9
*/
public static String getSysDateStringYMDHMS() {
String date = "";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
java.util.Date dd = new java.util.Date();
date = sdf.format(dd);
return date;
}
/**
* 以yyyyMMddHHmmss格式返回系统日期时间
*
* @return 系统日期时间 add by zg 2004-09-25
*/
public static String getSysDateStringYMDHMS2() {
String date = "";
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
java.util.Date dd = new java.util.Date();
date = sdf.format(dd);
return date;
}
}
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.TimeZone;
import org.apache.commons.lang.UnhandledException;
/**
*
* @Company : hiaas.com
* @comment
* 说明:日期时间相关的一些方法
* @author yuzhizhong
* @create 2014年4月19日 上午9:24:22
*/
public class DateHelper {
public static final long SECOND = 1000;
public static final long MINITE = SECOND * 60;
public static final long HOUR = MINITE * 60;
public static final long DAY = HOUR * 24;
public static final String TIME_MIN = "00:00:00";
public static final String TIME_MAX = "23:59:59";
public static final String HOUR_MINITE = "HH:mm";
public static final SimpleDateFormat dateSdf = new SimpleDateFormat("yyyyMMdd");
public static final SimpleDateFormat timeSdf = new SimpleDateFormat("HHmmss");
public static final SimpleDateFormat timeSdf2 = new SimpleDateFormat("HHmm");
/**
* 说明:将DateTime中的Date转换成Integer
* @param date
* @return
*/
public static final int getDateInt(Date date){
return Integer.valueOf(dateSdf.format(date));
}
/**
* 说明:将DateTime中的Time转换成Integer
* @param date
* @return
*/
public static final int getTimeInt(Date date){
return Integer.valueOf(timeSdf.format(date));
}
/**
* 说明:将DateTime中的Time转换成Integer
* @param date
* @return
*/
public static final int getTime2Int(Date date){
return Integer.valueOf(timeSdf2.format(date));
}
// order is like this because the SimpleDateFormat.parse does not fail with
// exception
// if it can parse a valid date out of a substring of the full string given
// the mask
// so we have to check the most complete format first, then it fails with
// exception
private static final String[] RFC822_MASKS = {
"EEE, dd MMM yy HH:mm:ss z",
"EEE, dd MMM yy HH:mm z",
"dd MMM yy HH:mm:ss z",
"dd MMM yy HH:mm z"
};
// order is like this because the SimpleDateFormat.parse does not fail with
// exception
// if it can parse a valid date out of a substring of the full string given
// the mask
// so we have to check the most complete format first, then it fails with
// exception
private static final String[] W3CDATETIME_MASKS = {
"yyyy-MM-dd'T'HH:mm:ss.SSSz",
"yyyy-MM-dd't'HH:mm:ss.SSSz",
"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'",
"yyyy-MM-dd't'HH:mm:ss.SSS'z'",
"yyyy-MM-dd'T'HH:mm:ssz",
"yyyy-MM-dd't'HH:mm:ssz",
"yyyy-MM-dd'T'HH:mm:ss'Z'",
"yyyy-MM-dd't'HH:mm:ss'z'",
"yyyy-MM-dd'T'HH:mmz", // together with logic in the parseW3CDateTime they
"yyyy-MM'T'HH:mmz", // handle W3C dates without time forcing them to be GMT
"yyyy'T'HH:mmz",
"yyyy-MM-dd't'HH:mmz",
"yyyy-MM-dd'T'HH:mm'Z'",
"yyyy-MM-dd't'HH:mm'z'",
"yyyy-MM-dd",
"yyyy-MM",
"yyyy"
};
private static final String[] patterns_masks = {
"yyyy-MM-dd HH:mm:ss,SSS",
"yyyy-MM-dd HH:mm:ss.SSS",
"yyyy-MM-dd HH:mm:ss",
"yyyy-MM-dd HH:mm",
"yyyy-MM-dd",
"yyyy/MM/dd HH:mm:ss,SSS",
"yyyy/MM/dd HH:mm:ss.SSS",
"yyyy/MM/dd HH:mm:ss",
"yyyy/MM/dd HH:mm",
"yyyy/MM/dd",
"yyyyMMddHHmmss",
"yyyyMMdd",
"hh:mm:ss,SSS",
"hh:mm:ss.SSS",
"hh:mm:ss"
};
/**
* 修正 new Date() 函数返回的时间是北京时间.
* @since 2008-10-31
*/
public static void fixedChinaTimeZone() {
TimeZone userTimeZone = TimeZone.getTimeZone(System.getProperty("user.timezone"));
TimeZone chinaTimeZone = TimeZone.getTimeZone("Asia/Shanghai");
if (!chinaTimeZone.hasSameRules(userTimeZone)) {
TimeZone.setDefault(chinaTimeZone);
System.out.println("fixed current date:" + format(new Date(), "yyyy-MM-dd HH:mm:ss"));
}
}
/**
* get date string use pattern
*
* @param pattern
* see {@link java.text.SimpleDateFormat}
* @return a date string
*/
public static String format(String pattern) {
return format(new Date(), pattern);
}
/**
* get date string use pattern
*
* @param pattern
* see {@link java.text.SimpleDateFormat}
* @return a date string
*/
public static String format(Date date, String pattern) {
SimpleDateFormat dateFormater = new SimpleDateFormat(pattern);
//dateFormater.setTimeZone(TimeZone.getTimeZone("GMT+8")); // 2008-02-22 fixed by subchen
return dateFormater.format(date);
}
/**
* get current date and time string
*
* @return a local datetime string
*/
public static String getNowStr() {
return format(new Date(), "yyyy-MM-dd HH:mm:ss");
}
/**
* get current date string
*
* @return a local date string
*/
public static String getDateStr() {
return format(new Date(), "yyyy-MM-dd");
}
/**
* get current time string
*
* @return a local time string
*/
public static String getTimeStr() {
return format(new Date(), "HH:mm:ss");
}
/**
* @since 2008-01-02
*/
public static Calendar getCalendar(long millis) {
Calendar c = Calendar.getInstance();
c.setTimeInMillis(millis);
return c;
}
/**
* @since 2008-01-02
*/
public static Calendar getCalendar(Date date) {
Calendar c = Calendar.getInstance();
c.setTime(date);
return c;
}
/**
* @since 2008-01-02
*/
public static Date add(Date date, int field, int diff) {
Calendar c = getCalendar(date);
c.add(field, diff);
return c.getTime();
}
/**
* @since 2008-01-02
*/
public static Date add(int field, int diff) {
return add(new Date(), field, diff);
}
/**
* 得到与当前时间相差 diff 年的时间
*/
public static Date nextYears(int diff) {
return add(new Date(), Calendar.YEAR, diff);
}
/**
* 得到与当前时间相差 diff 年的时间
*/
public static Date nextYears(Date date, int diff) {
return add(date, Calendar.YEAR, diff);
}
/**
* 得到与当前时间相差 diff 年的时间 必须使用yyyy-MM-dd HH:mm:ss格式
*/
public static String nextYears(String sDate, int diff) {
return format(nextYears(parse(sDate), diff), "yyyy-MM-dd HH:mm:ss");
}
/**
* 得到与当前时间相差 diff 月的时间
*/
public static Date nextMonths(int diff) {
return add(new Date(), Calendar.MONTH, diff);
}
/**
* 得到与当前时间相差 diff 月的时间
*/
public static Date nextMonths(Date date, int diff) {
return add(date, Calendar.MONTH, diff);
}
/**
* 得到与当前时间相差 diff 月的时间 必须使用yyyy-MM-dd HH:mm:ss格式
*/
public static String nextMonths(String sDate, int diff) {
return format(nextMonths(parse(sDate), diff), "yyyy-MM-dd HH:mm:ss");
}
/**
* 得到与当前时间相差 diff 天的时间
*/
public static Date nextDays(int diff) {
return add(new Date(), Calendar.DATE, diff);
}
/**
* 得到与当前时间相差 diff 天的时间
*/
public static Date nextDays(Date date, int diff) {
return add(date, Calendar.DATE, diff);
}
/**
* 得到与当前时间相差 diff 天的时间 必须使用yyyy-MM-dd HH:mm:ss格式
*/
public static String nextDays(String sDate, int diff) {
return format(nextDays(parse(sDate), diff), "yyyy-MM-dd HH:mm:ss");
}
/**
* 得到与当前时间相差 diff 小时的时间
*/
public static Date nextHours(int diff) {
return add(new Date(), Calendar.HOUR, diff);
}
/**
* 得到与当前时间相差 diff 小时的时间
*/
public static Date nextHours(Date date, int diff) {
return add(date, Calendar.HOUR, diff);
}
/**
* 得到与当前时间相差 diff 小时的时间 必须使用yyyy-MM-dd HH:mm:ss格式
*/
public static String nextHours(String sDate, int diff) {
return format(nextHours(parse(sDate), diff), "yyyy-MM-dd HH:mm:ss");
}
/**
* 得到与当前时间相差 diff 分的时间
*/
public static Date nextMinutes(int diff) {
return add(new Date(), Calendar.MINUTE, diff);
}
/**
* 得到与当前时间相差 diff 分的时间
*/
public static Date nextMinutes(Date date, int diff) {
return add(date, Calendar.MINUTE, diff);
}
/**
* 得到与当前时间相差 diff 分的时间 必须使用yyyy-MM-dd HH:mm:ss格式
*/
public static String nextMinutes(String sDate, int diff) {
return format(nextMinutes(parse(sDate), diff), "yyyy-MM-dd HH:mm:ss");
}
/**
* 得到与当前时间相差 diff 秒的时间
*/
public static Date nextSeconds(int diff) {
return add(new Date(), Calendar.SECOND, diff);
}
/**
* 得到与当前时间相差 diff 秒的时间
*/
public static Date nextSeconds(Date date, int diff) {
return add(date, Calendar.SECOND, diff);
}
/**
* 得到与当前时间相差 diff 秒的时间 必须使用yyyy-MM-dd HH:mm:ss格式
*/
public static String nextSeconds(String sDate, int diff) {
return format(nextSeconds(parse(sDate), diff), "yyyy-MM-dd HH:mm:ss");
}
/**
* 清除时间,得到日期
* @since 2007-12-10
*/
public static Date clearTime(Date date) {
Calendar c = Calendar.getInstance();
c.setTime(date);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
return c.getTime();
}
/**
* 清除时间,得到日期
* @since 2007-12-10
*/
public static Date clearDate(Date date) {
Calendar c = Calendar.getInstance();
c.setTime(date);
c.set(Calendar.YEAR, 0);
c.set(Calendar.MONTH, 0);
c.set(Calendar.DATE, 0);
return c.getTime();
}
/**
* 计算 d1 - d2 的天数差
* @since 2007-12-10
*/
public static long diffDays(Date d1, Date d2) {
d1 = clearTime(d1);
d2 = clearTime(d2);
return (d1.getTime() - d2.getTime()) / (24 * 60 * 60 * 1000);
}
/**
* 计算 d1 - d2 的毫秒差
* @since 2007-12-10
*/
public static long diffMillis(Date d1, Date d2) {
return d1.getTime() - d2.getTime();
}
/**
* 计算 d1 - d2 的秒差
* @since 2007-12-10
*/
public static long diffSeconds(Date d1, Date d2) {
return (d1.getTime() - d2.getTime())/1000;
}
/**
* 得到 Calendar 类中的 Field Value.
* @see java.util.Calendar
* @since 2007-12-10
*/
public static int getCalendarField(Date date, int field) {
Calendar c = Calendar.getInstance();
c.setTime(date);
return c.get(field);
}
/**
* 得到当前时间
*/
public static Timestamp getTimestamp() {
return new Timestamp(System.currentTimeMillis());
}
public static Timestamp getTimestamp(Date date) {
return date == null ? null : new Timestamp(date.getTime());
}
/**
* 用指定的格式解析日期时间.
*
* @param datetime
* 时间字符串
* @param pattern
* see {@link java.text.SimpleDateFormat}
* @throws UnhandledException
*/
public static Date parse(String datetime, String pattern) {
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
sdf.setLenient(true);
ParsePosition pp = new ParsePosition(0);
Date d = sdf.parse(datetime, pp);
if (pp.getIndex() != datetime.length()) {
d = null;
}
return d;
}
/**
* Parses a Date out of a string using an array of masks. <p/> It uses the
* masks in order until one of them succedes or all fail. <p/>
*
* @param masks
* array of masks to use for parsing the string
* @param sDate
* string to parse for a date.
* @return the Date represented by the given string using one of the given
* masks. It returns <b>null</b> if it was not possible to parse
* the the string with any of the masks.
*/
private static Date parseUsingMask(String[] masks, String sDate) {
sDate = (sDate != null) ? sDate.trim() : null;
ParsePosition pp = null;
Date d = null;
for (int i = 0; d == null && i < masks.length; i++) {
DateFormat df = new SimpleDateFormat(masks[i]);
// df.setLenient(false);
df.setLenient(true);
try {
pp = new ParsePosition(0);
d = df.parse(sDate, pp);
if (pp.getIndex() != sDate.length()) {
d = null;
}
// System.out.println("pp["+pp.getIndex()+"]
// s["+sDate+"m["+masks[i]+"] d["+d+"]");
} catch (Exception e) {
// System.out.println("s: "+sDate+" m: "+masks[i]+" d: "+null);
// try next pattern
}
}
return d;
}
/**
* Parses a Date out of a String with a date in RFC822 format. <p/> It
* parsers the following formats:
* <ul>
* <li>"EEE, dd MMM yyyy HH:mm:ss z"</li>
* <li>"EEE, dd MMM yyyy HH:mm z"</li>
* <li>"EEE, dd MMM yy HH:mm:ss z"</li>
* <li>"EEE, dd MMM yy HH:mm z"</li>
* <li>"dd MMM yyyy HH:mm:ss z"</li>
* <li>"dd MMM yyyy HH:mm z"</li>
* <li>"dd MMM yy HH:mm:ss z"</li>
* <li>"dd MMM yy HH:mm z"</li>
* </ul>
* <p/> Refer to the java.text.SimpleDateFormat javadocs for details on the
* format of each element. <p/>
*
* @param sDate
* string to parse for a date.
* @return the Date represented by the given RFC822 string. It returns
* <b>null</b> if it was not possible to parse the given string
* into a Date.
*
*/
public static Date parseRFC822(String sDate) {
int utIndex = sDate.indexOf(" UT");
if (utIndex > -1) {
String pre = sDate.substring(0, utIndex);
String post = sDate.substring(utIndex + 3);
sDate = pre + " GMT" + post;
}
return parseUsingMask(RFC822_MASKS, sDate);
}
/**
* Parses a Date out of a String with a date in W3C date-time format. <p/>
* It parsers the following formats:
* <ul>
* <li>"yyyy-MM-dd'T'HH:mm:ssz"</li>
* <li>"yyyy-MM-dd'T'HH:mmz"</li>
* <li>"yyyy-MM-dd"</li>
* <li>"yyyy-MM"</li>
* <li>"yyyy"</li>
* </ul>
* <p/> Refer to the java.text.SimpleDateFormat javadocs for details on the
* format of each element. <p/>
*
* @param sDate
* string to parse for a date.
* @return the Date represented by the given W3C date-time string. It
* returns <b>null</b> if it was not possible to parse the given
* string into a Date.
*
*/
public static Date parseW3CDateTime(String sDate) {
// if sDate has time on it, it injects 'GTM' before de TZ displacement
// to
// allow the SimpleDateFormat parser to parse it properly
int tIndex = sDate.indexOf("T");
if (tIndex > -1) {
if (sDate.endsWith("Z")) {
sDate = sDate.substring(0, sDate.length() - 1) + "+00:00";
}
int tzdIndex = sDate.indexOf("+", tIndex);
if (tzdIndex == -1) {
tzdIndex = sDate.indexOf("-", tIndex);
}
if (tzdIndex > -1) {
String pre = sDate.substring(0, tzdIndex);
int secFraction = pre.indexOf(",");
if (secFraction > -1) {
pre = pre.substring(0, secFraction);
}
String post = sDate.substring(tzdIndex);
sDate = pre + "GMT" + post;
}
} else {
sDate += "T00:00GMT";
}
return parseUsingMask(W3CDATETIME_MASKS, sDate);
}
/**
* Parses a Date out of a String with a date in W3C date-time format or in a
* RFC822 format or in a humpic-default format. <p/> 用尝试多种格式解析日期时间,
* 修改自:http://www.koders.com/java/fidDBC85D14D02AA458CE8B8A25256E176EAC6EA748.aspx
* <p>
*
* @param sDate
* string to parse for a date.
* @return the Date represented by the given W3C date-time string. It
* returns <b>null</b> if it was not possible to parse the given
* string into a Date.
*/
public static Date parse(String sDate) {
Date d = parseW3CDateTime(sDate);
if (d == null) {
d = parseRFC822(sDate);
}
if (d == null) {
d = parseUsingMask(patterns_masks, sDate);
}
if (d == null) {
try {
d = DateFormat.getInstance().parse(sDate);
} catch (ParseException e) {
d = null;
}
}
return d;
}
/**
* create a RFC822 representation of a date. <p/> Refer to the
* java.text.SimpleDateFormat javadocs for details on the format of each
* element. <p/>
*
* @param date
* Date to parse
* @return the RFC822 represented by the given Date It returns <b>null</b>
* if it was not possible to parse the date.
*/
public static String formatRFC822(Date date) {
SimpleDateFormat dateFormater = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss 'GMT'");
dateFormater.setTimeZone(TimeZone.getTimeZone("GMT"));
return dateFormater.format(date);
}
/**
* create a W3C Date Time representation of a date. <p/> Refer to the
* java.text.SimpleDateFormat javadocs for details on the format of each
* element. <p/>
*
* @param date
* Date to parse
* @return the W3C Date Time represented by the given Date It returns
* <b>null</b> if it was not possible to parse the date.
*/
public static String formatW3CDateTime(Date date) {
SimpleDateFormat dateFormater = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
dateFormater.setTimeZone(TimeZone.getTimeZone("GMT"));
return dateFormater.format(date);
}
/**
*
* 说明:获得两个时间的天数
* @param d1 开始时间
* @param d2 结束时间
* @return
*/
public static int getDays(Date d1,Date d2) {
return (int) ((d2.getTime() - d1.getTime()) / (3600L * 1000 * 24));
}
/**
*
* 说明:获得两个时间的小时数
* @param d1 开始时间
* @param d2 结束时间
* @return
*/
public static int getHours(Date d1,Date d2) {
return (int) ((d2.getTime() - d1.getTime()) / (3600L * 1000));
}
public static String formatDate(Date date) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy 年 MM 月 dd 日");
return sdf.format(date);
}
public static String formatTime(Date date) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
return sdf.format(date);
}
public static String formatTimeMonth(Date date) {
SimpleDateFormat sdf = new SimpleDateFormat("MM月dd日");
return sdf.format(date);
}
public static String formatTime2(Date date) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sdf.format(date);
}
public static String getYear(Date date) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
return sdf.format(date);
}
public static Date getMaxTodayDate(){
String todayDateStr = format(new Date(), "yyyy-MM-dd 23:59:59");
return parse(todayDateStr, "yyyy-MM-dd HH:mm:ss");
}
public static Date getMinTodayDate() {
String todayDateStr = format(new Date(), "yyyy-MM-dd 00:00:00");
return parse(todayDateStr, "yyyy-MM-dd HH:mm:ss");
}
public static Date getMaxTodayDate(Date date){
String todayDateStr = format(date, "yyyy-MM-dd 23:59:59");
return parse(todayDateStr, "yyyy-MM-dd HH:mm:ss");
}
public static Date getMinTodayDate(Date date) {
String todayDateStr = format(date, "yyyy-MM-dd 00:00:00");
return parse(todayDateStr, "yyyy-MM-dd HH:mm:ss");
}
public static Date getCurrentTodayDate(Date date){
String todayDateStr = format(date, "yyyy-MM-dd HH:mm:ss");
return parse(todayDateStr, "yyyy-MM-dd HH:mm:ss");
}
public static void main(String[] args) {
System.out.println(DateHelper.format(new Date(), "yyyyMMddHHmm"));
System.out.println(DateHelper.getYear(new Date()));
//System.out.println(DateHelper.parse(datetime, pattern));
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("测试下: "+DateHelper.diffDays(DateHelper.parse("2011-09-07 23:36:30"), new Date()));
System.out.println("测试下: "+DateHelper.diffDays(DateHelper.parse("2011-10-22 23:36:30"), new Date()));
Date t = DateHelper.parse("2009-03-04");
System.out.println(sdf.format(t));
Date d = nextWorkDays(new Date(), 3);
System.out.println("date==================="+sdf.format(d));
System.out.println("date==================="+sdf.format(DateHelper.nextDays(7)));
//nextDays("2011-03-25",)
String time = "01:20";
System.out.println(DateHelper.getTime2Int(DateHelper.parse(time, "HH:mm")));
//System.out.println(DateHelper.f);
System.out.println("date==================="+diffDays(parse("2011-09-01"),new Date()));
StringBuffer sb = new StringBuffer("");
for(int x = 9; x < 19;x++) {
for(int i = 0;i < 60;i++) {
sb.append("\"");
if(x < 10) sb.append("0");
sb.append(x).append(":");
if(i < 10) sb.append("0");
sb.append(i).append("\",");
}
}
System.out.println(sb.toString());
}
/**
*
* 说明:返回当前的diff个工作日后的时间--暂时只排除周六周日
* sunday-1 thursday-5 saturday-7
* @param date
* @param diff
* @return
*/
public static Date nextWorkDays(Date date, int diff) {
//得到当前的时间是星期几
Calendar c = Calendar.getInstance();
c.setTime(date);
Integer dayOfWeek = c.get(Calendar.DAY_OF_WEEK);
int perDays = 0;
if(!dayOfWeek.equals(1)&&!dayOfWeek.equals(7)) {
perDays = 7-dayOfWeek;
}
diff = diff-perDays;
int allDiffDays = 0;
if(diff > 0) {
int numOfWeek = diff/5;
int restDays = diff%5;
allDiffDays = numOfWeek*7+restDays;
if(dayOfWeek.equals(1)) {
allDiffDays = allDiffDays+1;
} else {
allDiffDays = allDiffDays+2+perDays;
}
} else {
return nextDays(date, diff+perDays);
}
return nextDays(date, allDiffDays);
}
/**
* 得到本周周一
* @param w 0: 表示为本周,-1:表示为上周 ,1:表示为下周,以此类推
* @return yyyy-MM-dd
*/
public static String getMondayOfThisWeek(int w) {
Calendar c = Calendar.getInstance();
int dayofweek = c.get(Calendar.DAY_OF_WEEK) - 1;
if (dayofweek == 0)
dayofweek = 7;
c.add(Calendar.DATE, -dayofweek + 1 + 7 * w);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return sdf.format(c.getTime());
}
/**
*得到本周周日
* @param w 0: 表示为本周,-1:表示为上周 ,1:表示为下周,以此类推
* @return yyyy-MM-dd
*/
public static String getSundayOfThisWeek(int w) {
Calendar c = Calendar.getInstance();
int dayofweek = c.get(Calendar.DAY_OF_WEEK) - 1;
if (dayofweek == 0)
dayofweek = 7;
c.add(Calendar.DATE, -dayofweek + 7 + 7 * w);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return sdf.format(c.getTime());
}
/**
* 得到本月最后一天
* @param dt 某个月的某一天
* @return
*/
public static String getLastDateOfMonth(Date dt) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
cal.setTime(dt);
int days = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
cal.set(Calendar.DAY_OF_MONTH, days);
String result = format.format(cal.getTime());
//System.out.println("一个月最后一天" + result);
return result;
}
/**
* 得到本月第一天
* @param dt 某个月的某一天
* @return
*/
public static String getFristDateOfMonth(Date dt) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
cal.setTime(dt);
int days = cal.getActualMinimum(Calendar.DAY_OF_MONTH);
cal.set(Calendar.DAY_OF_MONTH, days);
String result = format.format(cal.getTime());
//System.out.println("一个月第一天" + result);
return result;
}
/**
* 以YYYY-MM-DD HH:MM:SS格式返回系统日期时间
*
* @return 系统日期时间 add by zg 2003-12-9
*/
public static String getSysDateStringYMDHMS() {
String date = "";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
java.util.Date dd = new java.util.Date();
date = sdf.format(dd);
return date;
}
/**
* 以yyyyMMddHHmmss格式返回系统日期时间
*
* @return 系统日期时间 add by zg 2004-09-25
*/
public static String getSysDateStringYMDHMS2() {
String date = "";
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
java.util.Date dd = new java.util.Date();
date = sdf.format(dd);
return date;
}
}
发表评论
-
根据Model类自动生成
2016-03-29 14:08 5651.自动生成hashcode 和 equals 代码 2 ... -
金额转换工具类
2015-01-15 09:59 597转载地址:http://www.open ... -
Validate Date
2014-11-07 17:30 861校验一个文本文件中某个字符串(A)是否是合法日期的方法: ... -
获取本地电脑用户目录下的配置文件信息
2014-09-22 15:24 1218Step1:方法类 package com.hnmmli.g ... -
正则表达式
2014-09-11 10:59 557/** * 验证身份证号码 * 15位 ... -
汉字转拼音工具类
2014-09-09 10:26 578PinYinUtils 工具类 方法1:conver ...
相关推荐
Java日期工具类 1、日期的各种格式化 2、获取当前年度 3、获取当前月份 4、获取当前天号数 5、获取当前时间往前推一个月的时间 6、获取上个月("MMM yyyy") 7、获取上个月("yyyymm") 8、获取上个月("yyyy-mm") 9、...
java日期工具类,java日期工具类,java日期工具类,java日期工具类
DateUtils(日期工具类),包含日期格式化,解析等。
日期工具类
根据提供的文件信息,本文将对日期工具类进行深入解析,并详细介绍其包含的主要功能与实现方法。此工具类主要涉及到了日期格式化、日期解析、获取当前时间等实用操作。 ### 一、概述 该日期工具类名为 `DateUtil`...
强大的好用的原创日期工具类: 1.返回当前日期字符串 yyyy-MM-dd 2.返回当前日期字符串 yyyy-MM-dd HH:mm:ss 3.根据指定时间格式解析日期字符串为Date对象 4.根据默认时间格式解析日期字符串为Date对象 5.根据指定...
Java日期工具类是Java开发中不可或缺的一部分,它们用于处理日期和时间相关的操作。在Java中,日期和时间处理涉及到多个类和接口,如`java.util.Date`、`java.util.Calendar`、`java.text.SimpleDateFormat`以及Java...
本篇将围绕Java中的日期工具类和时间工具类展开讨论,同时会涉及到日期时间的格式化。 首先,Java 8之前,我们主要依赖`java.util.Date`和`java.text.SimpleDateFormat`这两个类来处理日期和时间。`Date`类用于表示...
各种你能想到的日期计算,操作。包含常见的年月日间隔计算、比较、格式化
`时间日期工具类`是提升开发效率的关键,它们提供了对日期和时间进行格式化、比较、计算等操作的便捷方法。在这个"时间日期工具类(包含java8新特性).zip"压缩包中,我们有两个文件:DateUtil.java和DateUtils.java...