JAVA常用的日期操作方法
来源:互联网 发布:网络环境的现状 编辑:程序博客网 时间:2024/05/22 10:01
public class DateUtil {
//判断当天是否是周末
public static boolean isWeekend(String date){
String datum = "2011-10-08";// 基准日期
int dayCount = 0;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
dayCount = (int) ((sdf.parse(date).getTime() - sdf.parse(datum)
.getTime()) / (1000 * 60 * 60 * 24));
} catch (ParseException e) {
e.printStackTrace();
}
return (dayCount % 7 == 0 || dayCount % 7 == 1);
}
/**
* 私有构造方法,防止类的实例化,因为工具类不需要实例化。
*/
private DateUtil() {
}
/**
* 格式化timestamp日期型
*
* @param timestamp 日期
* @return 格式化后的日期,格式如:2005-12-04
*/
public static String convertDate(long timestamp) {
return new SimpleDateFormat("yyyy-MM-dd").format(new Date(timestamp));
}
/**
* 格式化日期(当前日期)
*
* @return 格式如:2005-12-05 12:25:36
*/
public static String getDateTime() {
return getDateTime(new java.util.Date());
}
/**
* 取得SQL类型的DATE
* util.date转成sql.date
*
* @param d
* @return
*/
public static java.sql.Date getSQLDate(Date d) {
return new java.sql.Date(d.getTime());
}
/**
* 把Object对像转换成Date类型
* 如果对像为空或格式不能解析,返回当前日期
*
* @param o
* @return
*/
public static Date getDate(Object o) {
if (o == null) {
return new Date();
} else if (o instanceof Date) {
return (Date) o;
} else if (o instanceof String) {
return getDate(String.valueOf(o));
} else if (o instanceof java.sql.Timestamp) {
return new Date(((java.sql.Timestamp) o).getTime());
} else {
return new Date();
}
}
/**
* 根据传入的日期转换成字符形式的日期
*
* @param date 日期型
* @return 如:2005-12-25 08:25:36
*/
public static String getDateTime(java.util.Date date) {
if (date == null) return "";
SimpleDateFormat formatter =
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String NDate = formatter.format(date);
return NDate;
}
/**
* 日期格式化成日期时分,不取秒,
*
* @param date
* @return 2005-12-25 12:25
*/
public static String getDateHF(java.util.Date date) {
if (date == null) return "";
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm");
String NDate = formatter.format(date);
return NDate;
}
/**
* 日期格式化成时分,不取秒,
*
* @param date
* @return 12:25
*/
public static String getHF(java.util.Date date) {
if (date == null) return "";
SimpleDateFormat formatter = new SimpleDateFormat("HH:mm");
String NDate = formatter.format(date);
return NDate;
}
/**
* @param date
* @return
*/
public static String getTimeString(java.util.Date date) {
if (date == null) return "";
SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");
String NDate = formatter.format(date);
return NDate;
}
/**
* 取得年月日
*
* @return 2008-12-25
*/
public static String getDateString() {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
String NDate = formatter.format(new Date());
return NDate;
}
/**
* 取得年月日
*
* @return 08-12-25
*/
public static String getShortDateString() {
SimpleDateFormat formatter = new SimpleDateFormat("yy-MM-dd");
String NDate = formatter.format(new Date());
return NDate;
}
/**
* 取得年月日
*
* @param date
* @return 20058-12-25
*/
public static String getDateString(Date date) {
if (date == null) return "";
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
String NDate = formatter.format(date);
return NDate;
}
/**
* 取得中文格式的日期
*
* @return 2005后12月25日
*/
public static String getCnDate() {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy年MM月dd日");
String NDate = formatter.format(new Date());
return NDate;
}
/**
* 取得中文格式的日期
*
* @param d
* @return 2005后12月25日
*/
public static String getCnDateTime(Date d) {
if (d == null) d = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分");
String NDate = formatter.format(d);
return NDate;
}
/**
* 取得中文格式的日期
*
* @param d
* @return 2005后12月25日
*/
public static String getCnDate(Date d) {
if (d == null) d = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy年MM月dd日");
String NDate = formatter.format(d);
return NDate;
}
/**
* 根据传入的格式取得日期字符串
*
* @param date
* @param Str 格式化格式,如yyyy-MM-dd
* @return
*/
public static String getDateStrByProp(Date date, String Str) {
if (date == null) return "";
String NDate = "";
try {
SimpleDateFormat formatter = new SimpleDateFormat(Str);
NDate = formatter.format(date);
} catch (Exception e) {
NDate = "";
}
return NDate;
}
/**
* 取得当前日期的Long型
* 如1212452121222
*
* @return
*/
public static long getTime() {
return (new java.util.Date()).getTime();
}
/**
* 根据日期取得年月日
* 不推荐使用
*
* @param DateString
* @return
*/
public static String getStrDate(String DateString) {
return DateString.substring(0, 10);
}
/**
* 根据日期取得年月日
* 不推荐使用
*
* @return
*/
public static String getStrDate() {
return getDateTime().substring(0, 10);
}
/**
* 比较日期大小
*
* @param last
* @param now
* @return
*/
public static boolean compareTo(String last, String now) {
try {
//DateFormat formatter=DateFormat.getDateInstance();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date temp1 = formatter.parse(last);
Date temp2 = formatter.parse(now);
if (temp1.after(temp2)) {
return false;
} else if (temp1.before(temp2)) {
return true;
}
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
/**
* 取得 addLong 毫秒以前(以后)的时间
*
* @param olddate
* @param addLong
* @return
*/
public static Date getAddDate(Date olddate, long addLong) {
long temp = olddate.getTime();
temp = temp + addLong;
return new Date(temp);
}
/**
* @param date1
* @param date2
* @return
*/
public static int DateDiff(String date1, String date2) {
long d1 = Math.abs(getDate(date2).getTime() - getDate(date1).getTime());
int dNum = Math.round(d1 / 1000 / 60 / 60 / 24);
return dNum;
}
public static int DateDiff(Date date1, Date date2) {
if (date1 == null || date2 == null) return 0;
long d1 = Math.abs(date2.getTime() - date1.getTime());
int dNum = Math.round(d1 / 1000 / 60 / 60 / 24);
return dNum;
}
/**
* 把字符串转换成时间,格式为:yyyy-MM-dd HH:mm:ss
*
* @param dateStr
* @return
*/
public static Date getDate(String dateStr) {
Date temp1 = null;
if (dateStr == null) return null;
if (dateStr.equals("")) return null;
SimpleDateFormat formatter = null;
try {
if (dateStr.indexOf(" ") != -1) {
String[] aa = StringUtil.split(dateStr, ":");
if (aa.length == 3)
formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
else if (aa.length == 2)
formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm");
else
formatter = new SimpleDateFormat("yyyy-MM-dd HH");
} else {
formatter = new SimpleDateFormat("yyyy-MM-dd");
}
temp1 = formatter.parse(dateStr);
} catch (Exception e) {
e.printStackTrace();
}
return temp1;
}
/**
* 把long型日期转换成天数
*
* @param date
* @return
*/
public static String getDateLength(long date) {
String s = "";
if (date > 1000 * 60 * 60 * 24) {
s += date / (1000 * 60 * 60 * 24) + "天";
date = date % (1000 * 60 * 60 * 24);
}
if (date > 1000 * 60 * 60) {
s += date / (1000 * 60 * 60) + "时";
date = date % (1000 * 60 * 60);
}
if (date > 1000 * 60) {
s += date / (1000 * 60) + "分";
}
return s;
}
/**
* 取得当前时间
*
* @return
*/
public static Date getDate() {
return new Date();
}
/**
* 取得当前星期
*
* @return
*/
public static String getWeekDay() {
String[] weekDay = new String[]{"星期日", "星期一", "星期二",
"星期三", "星期四", "星期五", "星期六"};
Calendar ca = Calendar.getInstance();
return weekDay[ca.get(Calendar.DAY_OF_WEEK) - 1];
}
/**
* 取得当前星期
*
* @return
*/
public static String getWeekDay(Date date) {
if(date==null){
return "";
}
else{
String[] weekDay = new String[]{"星期日", "星期一", "星期二",
"星期三", "星期四", "星期五", "星期六"};
Calendar ca = Calendar.getInstance();
ca.setTime(date);
return weekDay[ca.get(Calendar.DAY_OF_WEEK) - 1];
}
}
/**
* 取得指定周开始日期
* 默认从该周周一
*
* @param year
* @param week
* @return
*/
public static Date getWeekBeginDate(int year, int week) {
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, year);
c.set(Calendar.WEEK_OF_YEAR, week);
c.set(Calendar.DAY_OF_WEEK, 2);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
return c.getTime();
}
/**
* 取得指定周结束日期
* 默认为该周周日
*
* @param year
* @param week
* @return
*/
public static Date getWeekEndDate(int year, int week) {
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, year);
c.set(Calendar.WEEK_OF_YEAR, week + 1);
c.set(Calendar.DAY_OF_WEEK, 1);
c.set(Calendar.HOUR_OF_DAY, 23);
c.set(Calendar.MINUTE, 59);
c.set(Calendar.SECOND, 59);
return c.getTime();
}
/**
* 根据日期生成目录
*
* @param d
* @return
*/
public static String getDatePath(Date d) {
Calendar c = Calendar.getInstance();
c.setTime(d);
StringBuffer path = new StringBuffer();
path.append("/");
path.append(c.get(Calendar.YEAR));
path.append("/");
path.append(c.get(Calendar.MONTH) + 1);
path.append("/");
path.append(c.get(Calendar.DATE));
return path.toString();
}
/**
* 根据日期生成访问路经
*
* @param d
* @return
*/
public static String getDateViewPath(Date d) {
Calendar c = Calendar.getInstance();
c.setTime(d);
StringBuffer path = new StringBuffer();
path.append("/");
path.append(c.get(Calendar.YEAR));
path.append("/");
path.append(c.get(Calendar.MONTH) + 1);
path.append("/");
path.append(c.get(Calendar.DATE));
return path.toString();
}
/**
* 获取下一年的年份
* @return
*/
public static String getNextYear(){
Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
return String.valueOf(year+1);
}
/**
* 获取当前日期加上指定天数的新日期
* @param days
* @return
*/
public static String getAddDay(int days){
Calendar c = Calendar.getInstance();
c.add(Calendar.DAY_OF_YEAR,days);
return c.getTime().toLocaleString();
}
/**
* 获取当前年
* @return
*/
public static String getDateY(){
SimpleDateFormat formatter = new SimpleDateFormat("yyyy");
String NDate = formatter.format(new Date());
return NDate;
}
/**
* 获取当前年
* @return
*/
public static String getDateY(Date date){
SimpleDateFormat formatter = new SimpleDateFormat("yyyy");
String NDate = formatter.format(date);
return NDate;
}
/**
* 获取当前月
* @return
*/
public static String getDateM(){
SimpleDateFormat formatter = new SimpleDateFormat("MM");
String NDate = formatter.format(new Date());
return NDate;
}
/**
* 通过指定的日期获取月份
* @param date
* @return
*/
public static String getDateM(Date date){
SimpleDateFormat formatter = new SimpleDateFormat("MM");
String NDate = formatter.format(date);
return NDate;
}
/**
* 获取当前日
* @return
*/
public static String getDateD(){
SimpleDateFormat formatter = new SimpleDateFormat("dd");
String NDate = formatter.format(new Date());
return NDate;
}
/**
* 获取当前日
* @return
*/
public static String getDateD(Date date){
SimpleDateFormat formatter = new SimpleDateFormat("dd");
String NDate = formatter.format(date);
return NDate;
}
/**
* 年份下拉列表
* @param beforeNum 从当前年份向前推移(0 为当前年份)
* @param afterNum 从当前年份向后推移
* @param objName select控件名称
* @param objValue select控件默认被选中值
* @param styleStr select控件样式
* @param event select控件触发事件
* @return String
*/
public static String getYearSelect(int beforeNum,int afterNum,String objName,String objValue,String styleStr,String event,String defaultValue){
StringBuffer htmlStr=new StringBuffer();
try{
String curYear=getDateY();
if(curYear==null||"".equals(curYear)){
curYear="2008";
}
int beginYear=Integer.parseInt(curYear)-beforeNum;
int endYear=Integer.parseInt(curYear)+afterNum;
if(beginYear>endYear){
htmlStr.append("开始年度应该小于结束年度");
}else{
htmlStr.append("<select name=\""+objName+"\" ");
if(event!=null&&!event.equals("")){
htmlStr.append(event);
}
if(styleStr!=null&&!styleStr.equals("")){
htmlStr.append(" style=\""+styleStr+"\"");
}else{
htmlStr.append(" style=width:100px;\"");
}
htmlStr.append(">");
if(defaultValue!=null&&!defaultValue.equals("")){
htmlStr.append("<option value=\"\">"+defaultValue+"</option>");
}
for(int i=beginYear;i<=endYear;i++){
htmlStr.append("<option value=\""+i+"\"");
if(objValue!=null&&!objValue.equals("")&&objValue.equals(String.valueOf(i))){
htmlStr.append(" selected");
}
htmlStr.append(">"+i+"年</option>");
}
htmlStr.append("</select>");
}
}catch(Exception e){
System.out.println("DateUtil getYearSelect is error!");
e.printStackTrace();
}finally{
return htmlStr.toString();
}
}
/**
* 年份下拉列表
* @param objName select控件名称
* @param objValue select控件默认被选中值
* @param styleStr select控件样式
* @param event select控件触发事件
* @return String
*/
public static String getMonthSelect(String objName,String objValue,String styleStr,String event,String defaultValue){
StringBuffer htmlStr=new StringBuffer();
try{
htmlStr.append("<select name=\""+objName+"\" ");
if(event!=null&&!event.equals("")){
htmlStr.append(event);
}
if(styleStr!=null&&!styleStr.equals("")){
htmlStr.append(" style=\""+styleStr+"\"");
}else{
htmlStr.append(" style=width:100px;\"");
}
htmlStr.append(">");
if(defaultValue!=null&&!defaultValue.equals("")){
htmlStr.append("<option value=\"\">"+defaultValue+"</option>");
}
for(int i=1;i<=12;i++){
if(i<10){
htmlStr.append("<option value=\"0"+i+"\"");
if(objValue!=null&&!objValue.equals("")&&objValue.equals("0"+String.valueOf(i))){
htmlStr.append(" selected");
}
htmlStr.append(">0"+i+"月</option>");
}else{
htmlStr.append("<option value=\""+i+"\"");
if(objValue!=null&&!objValue.equals("")&&objValue.equals(String.valueOf(i))){
htmlStr.append(" selected");
}
htmlStr.append(">"+i+"月</option>");
}
}
htmlStr.append("</select>");
}catch(Exception e){
System.out.println("DateUtil getMonthSelect is error!");
e.printStackTrace();
}finally{
return htmlStr.toString();
}
}
/** 获取当前月日 短日期类型
* 比如0422
* @return
*/
public static String getDateMD(){
SimpleDateFormat formatter = new SimpleDateFormat("MMDD");
String NDate = formatter.format(new Date());
return NDate;
}
/**
* 获取当前月日 短日期类型
* 比如0422
* @return
*/
public static String getDateMD(Date date){
SimpleDateFormat formatter = new SimpleDateFormat("MMDD");
String NDate = formatter.format(date);
return NDate;
}
public static Date getAddDate(Date currentDate,int addDays){
Calendar c= Calendar.getInstance();
String dateStr = getDateString(currentDate);
String[] dates = dateStr.split("-");
if(dates!=null && dates.length == 3){
c.set(Integer.parseInt(dates[0]),Integer.parseInt(dates[1])-1,Integer.parseInt(dates[2]));
}
c.add(Calendar.DATE,addDays);
return c.getTime();
}
public static String getAddDateString(Date currentDate,int addDays){
Calendar c= Calendar.getInstance();
String dateStr = getDateString(currentDate);
String[] dates = dateStr.split("-");
if(dates!=null && dates.length == 3){
c.set(Integer.parseInt(dates[0]),Integer.parseInt(dates[1])-1,Integer.parseInt(dates[2]));
}
c.add(Calendar.DATE,addDays);
return getDateString(c.getTime());
}
public static String getAddDateTimeString(Date currentDate,int addDays){
Calendar c= Calendar.getInstance();
String dateStr = getDateString(currentDate);
String[] dates = dateStr.split("-");
if(dates!=null && dates.length == 3){
c.set(Integer.parseInt(dates[0]),Integer.parseInt(dates[1])-1,Integer.parseInt(dates[2]));
}
c.add(Calendar.DATE,addDays);
return getDateTime(c.getTime());
}
public static String getDateOperation(int addDays){
Calendar ca=Calendar.getInstance();
int num=ca.get(Calendar.DAY_OF_MONTH)- addDays;
ca.set(Calendar.DAY_OF_MONTH,num);//设定时间,将小时数的改变加进去。\
return getDateString(ca.getTime());
}
public static void main(String[] s) {
// String bDate = "2005-11-12";
// String eDate = "2005-11-12";
// System.out.println("bDate:" + bDate);
// System.out.println("eDate:" + eDate);
// int d = DateUtil.DateDiff(bDate, eDate);
// System.out.println("d:" + d);
// String dates = "2011-06-19";
int add = -30;
System.out.println(DateUtil.getDateOperation(2));
}
}
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import org.apache.commons.lang.time.DateUtils;
public abstract class DateTools {
private static final SimpleDateFormat yyyyMMddhhmmCn=new SimpleDateFormat("yyyy年MM月dd日 hh:ss");
private static final SimpleDateFormat MMddhhmmCn=new SimpleDateFormat("MM月dd日 hh:ss");
private static final SimpleDateFormat yyyyMMddCn=new SimpleDateFormat("yyyy年MM月dd日");
private static final SimpleDateFormat yyyyMMdd=new SimpleDateFormat("yyyy-MM-dd");
private static final String[] days={"周六","周日","周一","周二","周三","周四","周五"};
/**
* 解析时间
* @param date
* @return
*/
public static Date parseDate(String date) {
try {
return DateUtils.parseDate(date, new String[] { "yyyy-MM-dd" });
} catch (Exception er) {
return null;
}
}
/**
* 格式化时间为yyyy年MM月dd日 hh:ss的格式
* @param date
* @return
*/
public static String format2yyyyMMddhhmmCn(Date date){
return yyyyMMddhhmmCn.format(date);
}
/**
* 格式化时间为MM月dd日 hh:ss的格式
* @param date
* @return
*/
public static String format2MMddhhmmCn(Date date){
return MMddhhmmCn.format(date);
}
/**
* 格式化时间为MM月dd日
* @param date
* @return
*/
public static String format2yyyyMMddCn(Date date){
return yyyyMMddCn.format(date);
}
/**
* 格式化时间为yyyy-MM-dd
* @param date
* @return
*/
public static String format2yyyyMMdd(Date date){
return yyyyMMdd.format(date);
}
/**
* 今天
* @return
*/
public static String getToday(){
Calendar cal=Calendar.getInstance();
int day=cal.get(Calendar.DAY_OF_WEEK);
return days[day%7];
}
/**
* 明天
* @return
*/
public static String getTomorrow(){
Calendar cal=Calendar.getInstance();
int day=cal.get(Calendar.DAY_OF_WEEK)+1;
return days[day%7];
}
/**
* 后天
* @return
*/
public static String getDayAfterTomorrow(){
Calendar cal=Calendar.getInstance();
int day=cal.get(Calendar.DAY_OF_WEEK)+2;
return days[day%7];
}
/**
* 今天日期
* @return
*/
public static String getTodayDate(){
Date now=new Date();
return format2yyyyMMdd(now);
}
/**
* 明天日期
* @return
*/
public static String getTomorrowDate(){
Date now=new Date();
now=DateUtils.addDays(now, 1);
return format2yyyyMMdd(now);
}
/**
* 后天日期
* @return
*/
public static String getDayAfterTomorrowDate(){
Date now=new Date();
now=DateUtils.addDays(now, 2);
return format2yyyyMMdd(now);
}
}
- JAVA常用的日期操作方法
- Java线程常用的操作方法
- JAVA对于数字证书的常用操作方法
- JAVA对于数字证书的常用操作方法
- java中常用的文件操作方法
- Java编程中字符串的常用操作方法
- 4. Java NIO 常用的操作方法
- java-多线程-几种常用的操作方法
- JAVA对于数字证书的常用操作方法
- 关于Java中数组的常用操作方法
- java NIO 常用的文件操作方法
- Java多线程常用操作方法
- Java字符串常用操作方法
- java io常用操作方法
- java Date常用操作方法
- Java线程常用操作方法
- 常用的文件操作方法
- String的常用操作方法
- LAMP整合tomcat安装包【shell源码安装】
- String 和StringBuffer的区别。
- DRP项目(七)----XML应用和XML的四种解析器(dom,sax,jdom和dom4j)原理及实例
- 分节符导致 Word 中的一个意外的分页符
- 获取客户端MAC
- JAVA常用的日期操作方法
- 获取客户端IPv4的地址
- poj1062
- 简明Vim练级攻略
- 如何更换用户名登录访问共享文件夹
- JAVA常用的字符串操作
- Ext.core包与Ext详解
- poj1065
- 中国移动取消话费有效期 其他运营商或跟进