时间处理工具类DateUtils
public class DateUtils
{
public static final String SHORT_DATE = "yyyy-MM-dd";
public static final String SHORT_DATE_US = "yyyy-MM-dd";
public static final String LONG_DATE = "yyyy-MM-dd HH:mm:ss";
public static final String YMDHM = "yyyy-MM-dd HH:mm";
public static final String HM = "HH:mm";
public static final SimpleDateFormat DF_SHORT_CN = new SimpleDateFormat(SHORT_DATE);
public static final SimpleDateFormat SDF_YMDHM = new SimpleDateFormat(YMDHM);
public static final SimpleDateFormat SDF_HM = new SimpleDateFormat(HM);
public static final SimpleDateFormat DF_CN = new SimpleDateFormat(LONG_DATE);
public static final int REALTIME = 0;
public static final int HOURLY = 1;
public static final int DAILY = 2;
public static final int BIWEEKLY = 3;
public static final int WEEKLY = 4;
public static final int MONTHLY = 5;
public static final int QUARTLY = 6;
public static final int BIYEARLY = 7;
public static final int YEARLY = 8;
public static final long day = 86400000l;
private DateUtils()
{
}
/**
* Calendar -> String
*/
public static String format(Calendar cal)
{
return format(cal.getTime());
}
/**
* Calendar,String -> String
*/
public static String format(Calendar cal, String pattern)
{
return format(cal.getTime(), pattern);
}
/**
* Calendar,DateFormat -> String
*/
public static String format(Calendar cal, DateFormat df)
{
return format(cal.getTime(), df);
}
/**
* Date -> String
*/
public static String format(Date date)
{
return format(date, DF_CN);
}
/**
* Date,String -> String
*/
public static String format(Date date, String pattern)
{
SimpleDateFormat df = new SimpleDateFormat(pattern);
return format(date, df);
}
public static String format(long ts, DateFormat df)
{
return format(new Date(ts), df);
}
public static String format(long ts, String format,Locale local)
{
SimpleDateFormat df = new SimpleDateFormat(format, local);
return format(new Date(ts), df);
}
/**
* Date,DateFormat -> String
*/
public static String format(Date date, DateFormat df)
{
// if (date == null)
// return "";
//
// if (df != null)
// {
// return df.format(date);
// }
// return DF_CN.format(date);
if(date==null)return "";
return getRealDateFormat(df).format(date);
}
public static long getGapMin(long minsec)
{
return minsec / 60000;
}
public static long getGapMinByAddtime(long addtime)
{
return getGapMinByAddtime(addtime, System.currentTimeMillis());
}
public static long getGapMinByAddtime(long addtime, long current)
{
return getGapMin(current - addtime);
}
public static String getGapMinStirngByAddtime(long addtime, long current)
{
return getMinStirngBySubTime(getGapMin(current - addtime));
}
public static String getMinStirngBySubTime(long min)
{
long hour = min / 60;
long restmin = min % 60;
return (hour > 0 ? hour + "时" : "") + restmin + "分";
}
public static Calendar parseDateString(String str, String format)
{
if (str == null)
{
return null;
}
Date date = null;
SimpleDateFormat df = new SimpleDateFormat(format);
try
{
date = getRealDateFormat(df).parse(str);
}
catch (Exception ex)
{
}
if (date == null)
{
return null;
}
Calendar cal = Calendar.getInstance();
cal.setTime(date);
return cal;
}
/**
* returns the current date in the default format
*/
public static String getToday()
{
return format(new Date());
}
public static Date getYesterday()
{
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, -1);
return cal.getTime();
}
public static Calendar getFirstDayOfMonth()
{
Calendar cal = getNow();
cal.set(Calendar.DAY_OF_MONTH, 1);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
return cal;
}
/**
* 获取某月的第一天
* @param month
* @return Calendar
* */
public static Calendar getFirstDayOfMonth(int month)
{
Calendar cal = Calendar.getInstance();
cal.set(Calendar.MONTH, month);
cal.set(Calendar.DAY_OF_MONTH, 1);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
return cal;
}
public static Calendar getNow()
{
return Calendar.getInstance();
}
/**
* add some month from the date
*/
public static Date addMonth(Date date, int n) throws Exception
{
Calendar cal = getNow();
cal.setTime(date);
cal.add(Calendar.MONTH, n);
return cal.getTime();
}
public static int daysBetween(Date returnDate)
{
return daysBetween(null, returnDate);
}
public static long tirmDay(Calendar time)
{// 得到当天的0点时间
time.set(Calendar.HOUR_OF_DAY, 0);
time.set(Calendar.MINUTE, 0);
time.set(Calendar.SECOND, 0);
time.set(Calendar.MILLISECOND, 0);
return time.getTimeInMillis();
}
public static int daysBetween(Date now, Date returnDate)
{
if (returnDate == null)
return 0;
Calendar cNow = getNow();
Calendar cReturnDate = getNow();
if (now != null)
{
cNow.setTime(now);
}
cReturnDate.setTime(returnDate);
setTimeToMidnight(cNow);
setTimeToMidnight(cReturnDate);
long nowMs = cNow.getTimeInMillis();
long returnMs = cReturnDate.getTimeInMillis();
return millisecondsToDays(nowMs - returnMs);
}
private static int millisecondsToDays(long intervalMs)
{
return (int) (intervalMs / (1000 * 86400));
}
private static void setTimeToMidnight(Calendar calendar)
{
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
}
public static String formatDate(Object obj, String format)
{
String result = "";
try
{
Date date = (Date) obj;
result = format(date, format);
}
catch (Exception e)
{
}
return result;
}
public static String formatDate(Object obj)
{
return formatDate(obj, SHORT_DATE);
}
public static String getSunday(String date)
{
Calendar c = DateUtils.parseDateString(date, "yyyy-MM-dd");
int dayofweek = c.get(Calendar.DAY_OF_WEEK) - 1;
if (dayofweek == 0)
{
dayofweek = 0;
}
c.add(Calendar.DATE, -dayofweek);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return sdf.format(c.getTime());
}
public static Calendar getStartTime(Calendar calendar, int interval)
{
if (calendar == null)
return null;
Calendar fromtime = Calendar.getInstance();
fromtime.setTimeZone(calendar.getTimeZone());
fromtime.set(Calendar.MILLISECOND, 0);
int y = calendar.get(Calendar.YEAR);
int m = calendar.get(Calendar.MONTH);
int d = calendar.get(Calendar.DAY_OF_MONTH);
if (interval == DAILY || interval == HOURLY)
{
fromtime.set(y, m, d, 0, 0, 0);
}
else if (interval == WEEKLY)
{
fromtime.set(y, m, d, 0, 0, 0);
fromtime.add(Calendar.DATE, 1 + Calendar.SUNDAY - fromtime.get(Calendar.DAY_OF_WEEK));
}
else if (interval == MONTHLY)
{
fromtime.set(y, m, 1, 0, 0, 0);
}
else if (interval == BIWEEKLY)
{
fromtime.set(y, m, d, 0, 0, 0);
fromtime.add(Calendar.WEEK_OF_YEAR, (-1) * (fromtime.get(Calendar.WEEK_OF_YEAR) + 1) % 2);
fromtime.add(Calendar.DATE, Calendar.SUNDAY - fromtime.get(Calendar.DAY_OF_WEEK));
}
else if (interval == YEARLY)
{
fromtime.set(y, m, d, 0, 0, 0);
}
else if (interval == QUARTLY)
{
fromtime.set(y, (m / 3) * 3, 1, 0, 0, 0);
}
else if (interval == BIYEARLY)
{
fromtime.set(y, (m / 6) * 6, 1, 0, 0, 0);
}
return fromtime;
}
public static Calendar getEndTime(Calendar calendar, int interval)
{
if (calendar == null)
return null;
Calendar endtime = Calendar.getInstance();
endtime.setTimeZone(calendar.getTimeZone());
endtime.set(Calendar.MILLISECOND, 0);
int y = calendar.get(Calendar.YEAR);
int m = calendar.get(Calendar.MONTH);
int d = calendar.get(Calendar.DAY_OF_MONTH);
if (interval == DAILY)
{
endtime.set(y, m, d, 0, 0, 0);
endtime.add(Calendar.DAY_OF_MONTH, 1);
}
else if (interval == WEEKLY)
{
endtime.set(y, m, d, 0, 0, 0);
endtime.add(Calendar.DATE, 2 + Calendar.SATURDAY - endtime.get(Calendar.DAY_OF_WEEK));
}
else if (interval == MONTHLY)
{
endtime.set(y, m, 1, 0, 0, 0);
endtime.add(Calendar.MONTH, 1);
}
else if (interval == BIWEEKLY)
{
endtime.set(y, m, d, 0, 0, 0);
endtime.add(Calendar.WEEK_OF_YEAR, endtime.get(Calendar.WEEK_OF_YEAR) % 2);
endtime.add(Calendar.DATE, 1 + Calendar.SATURDAY - endtime.get(Calendar.DAY_OF_WEEK));
}
else if (interval == YEARLY)
{
endtime.set(y + 1, m, d, 0, 0, 0);
}
else if (interval == QUARTLY)
{
if (m / 3 == 3)
{
endtime.set(y + 1, 0, 1, 0, 0, 0);
}
else
{
endtime.set(y, (m / 3 + 1) * 3, 1, 0, 0, 0);
}
}
else if (interval == BIYEARLY)
{
if (m / 6 == 1)
{
endtime.set(y + 1, 0, 1, 0, 0, 0);
}
else
{
endtime.set(y, (m / 6 + 1) * 6, 1, 0, 0, 0);
}
}
return endtime;
}
public static long getDays(String startdate, String enddate, String format)
{
Calendar s1 = DateUtils.parseDateString(startdate, format);
Calendar s2 = DateUtils.parseDateString(enddate, format);
if (s1 != null && s2 != null)
{
return getDays(s1.getTimeInMillis(), s2.getTimeInMillis());
}
return 0;
}
public static long getMonthDays(String date, String format)
{
Calendar cal = DateUtils.parseDateString(date, format);
if (cal != null)
{
Calendar starttime = DateUtils.getStartTime(cal, DateUtils.MONTHLY);
Calendar endtime = DateUtils.getEndTime(cal, DateUtils.MONTHLY);
return getDays(starttime.getTimeInMillis(), endtime.getTimeInMillis());
}
return 0;
}
public static long getDays(long startdate, long enddate)
{
return (enddate - startdate) / day;
}
public static String format(Long l, String pattern)
{
if(l==null)return "";
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(l);
return format(cal.getTime(), pattern);
}
public static DateFormat getRealDateFormat(DateFormat df)
{
return df==null?new SimpleDateFormat(SHORT_DATE_US,Locale.US):df;
}
//smdate="2004-03-26 13:31:40"
//bdate="2004-03-26 11:30:24
public static String daysBetween(String smdate,String bdate,String formate) throws ParseException
{
SimpleDateFormat df = new SimpleDateFormat(formate);
Date now=null;
Date date=null;
String result="";
try {
now = df.parse(smdate);
date = df.parse(bdate);
long l=now.getTime()-date.getTime();
long day=l/(24*60*60*1000);
long hour=(l/(60*60*1000)-day*24);
long min=((l/(60*1000))-day*24*60-hour*60);
long s=(l/1000-day*24*60*60-hour*60*60-min*60);
//System.out.println(""+day+"天"+hour+"小时"+min+"分"+s+"秒");
result= day==0?"":day+"天";
result+=hour==0?"":hour+"小时";
result+=min==0?"":min+"分";
result+=s==0?"":s+"秒";
} catch (ParseException e) {
// TODO Auto-generated catch block
result="";
}
return result;
}
/**
* 获取当前月与之前的N-1个月份
* @param n 获取月份数
* @return 'yyyy-MM'
* */
public static List<String> getCurrentMonths(int n){
List<String> months=new ArrayList<String>();
for(int i=n-1;i>=0;i--){
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MONTH,i-n+1);
int month = cal.get(Calendar.MONTH) + 1;
int year = cal.get(Calendar.YEAR);
months.add(year+""+(month<10?"0"+month:""+month));
}
return months;
}
/**
* 获取某年最后一天
* @param year int
* @return Date
* */
public static Date getCurrYearLast(int year){
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.set(Calendar.YEAR, year);
calendar.roll(Calendar.DAY_OF_YEAR, -1);
Date currYearLast = calendar.getTime();
return currYearLast;
}
}
时间处理工具类DateUtils的更多相关文章
- java时间处理工具类--DateUtils
package com.hexiang.utils; /** * @(#)DateUtil.java * * * @author kidd * @version 1.00 2007/8/8 */ im ...
- java 日期工具类DateUtils
日期工具类DateUtils CreateTime--2017年5月27日08:48:00Author:Marydon DateUtils.java-对日期类的进一步封装 import java. ...
- [java工具类01]__构建格式化输出日期和时间的工具类
在之前的学习中,我写过一篇关于字符串格式化的,就主要设计到了时间以及日期的各种格式化显示的设置,其主要时通过String类的fomat()方法实现的. 我们可以通过使用不同的转换符来实现格式化显示不同 ...
- Java中Date类型如何向前向后滚动时间,( 附工具类)
Java中的Date类型向前向后滚动时间(附工具类) 废话不多说,先看工具类: import java.text.SimpleDateFormat; import java.util.Calendar ...
- Java日期时间实用工具类
Java日期时间实用工具类 1.Date (java.util.Date) Date(); 以当前时间构造一个Date对象 Date(long); 构造函数 ...
- jdk8 时间日期工具类(转)
package com.changfu.common.util; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import jav ...
- JAVA 日期处理工具类 DateUtils
package com.genlot.common.utils; import java.sql.Timestamp;import java.text.ParseException;import ja ...
- Android经常使用工具类DateUtils(二)
在编写代码中,会经经常使用到时间Date这个类,小编整理了一些经常使用的时间工具类.供大家參考. import java.text.ParseException; import java.text.S ...
- 日期工具类 DateUtils(继承org.apache.commons.lang.time.DateUtils类)
/** * */ package com.dsj.gdbd.utils.web; import org.apache.commons.lang3.time.DateFormatUtils; impor ...
随机推荐
- 下载Spring的jar包的方法
- MAC上快速调出终端的设置(保持和Windows的操作一致)
在Windows上可以这样操作[Win+R]键->输入[cmd/cmder]打开终端. 在MAC下需要做些设置:打开[系统偏好设置]->打开[键盘]->打开[快捷键]->找到[ ...
- [NOIP2014] 提高组 洛谷P2296 寻找道路
题目描述 在有向图G 中,每条边的长度均为1 ,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件: 1 .路径上的所有点的出边所指向的点都直接或间接与终点连通. 2 .在满足条 ...
- 需要获取设备方向变化(UIDeviceOrientation)的消息
如果需要获得UIDeviceOrientation的转换消息的话,只需要: [[UIDevice currentDevice] beginGeneratingDeviceOrientationNoti ...
- 机器学习笔记--KNN算法2-实战部分
本文申明:本系列的所有实验数据都是来自[美]Peter Harrington 写的<Machine Learning in Action>这本书,侵删. 一案例导入:玛利亚小姐最近寂寞了, ...
- 自然语言9_NLTK计算中文高频词
以下代码仅限于python2 NLTK计算中文高频词 >>> sinica_fd=nltk.FreqDist(sinica_treebank.words()) >>> ...
- Flask-WTF form doesn't have attribute 'validate_on_submit'问题
今天在学习WTF表单的时候遇到了这个问题,在stackoverflow上搜索查到了解决方案 from flask.ext.wtf import Form from wtforms import Tex ...
- ubuntu下增加中文编码
在Ubuntu中,利用命令:locale,来查看系统的语言环境 参考:http://blog.chinaunix.net/uid-94449-id-2002589.html Windows的默认编码为 ...
- Unity State Machine
https://unity3d.com/learn/tutorials/modules/beginner/5-pre-order-beta/state-machine-behaviours http: ...
- C/C++宏中#与##的讲解
http://www.cnblogs.com/morewindows/archive/2011/08/18/2144112.html