`
liuxingshuijinglei
  • 浏览: 24255 次
  • 性别: Icon_minigender_2
  • 来自: 沈阳
文章分类
社区版块
存档分类
最新评论

日期工具类

 
阅读更多
package com.sim.common.utils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
*
* 项目名称:Kod 包名 com.kod.utils 类名称:DateUtils 类描述: -== 日期工具类 ==- 创建人:yuanqi.jing
* 创建时间:2014-11-11 上午8:54:56 修改备注:
*
* @version 1.0
*
*/
public class DateUtils {

protected static final Logger log = LoggerFactory
.getLogger(DateUtils.class);

// 将天转换成微秒
public static final long DAY_TIME = 24 * 60 * 60 * 1000;
public static final TimeZone TZ = TimeZone.getDefault();

/**
* 取得当前日期字符串,格式自定义
*
* @param dateFormat
* @return String
*/
public static String getDateTime(String dateFormat) {
Calendar calendar = Calendar.getInstance();
Date date = calendar.getTime();
SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
return sdf.format(date);
}

/**
* 取得当前日期字符串,格式:"yyyy-MM-dd"
*
* @return String
*/
public static String getCurrentDate() {
Calendar calendar = Calendar.getInstance();
Date date = calendar.getTime();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
return df.format(date);
}

/**
* 取得当前月份字符串,格式:"yyyy-MM"
*
* @return String
*/
public static String getCurrentMonth() {
Calendar calendar = Calendar.getInstance();
Date date = calendar.getTime();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM");
return df.format(date);
}

/**
* 取得当前年份字符串,格式:"yyyy"
*
* @return String
*/
public static String getCurrentYear() {
Calendar calendar = Calendar.getInstance();
Date date = calendar.getTime();
SimpleDateFormat df = new SimpleDateFormat("yyyy");
return df.format(date);
}

/**
* 取得当前日期前一天的日期
*
* @param date
* @return
*/
public static Date getLastDay() {
Calendar calendar = Calendar.getInstance();
Date date = calendar.getTime();
calendar.add(Calendar.DAY_OF_MONTH, -1);
date = calendar.getTime();
return date;
}

/**
* 取得当前日期前一天的日期字符串,格式:"yyyy-MM-dd"
*
* @param date
* @return
*/
public static String getLastDayStr() {
Calendar calendar = Calendar.getInstance();
Date date = calendar.getTime();
calendar.add(Calendar.DAY_OF_MONTH, -1);
date = calendar.getTime();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
return df.format(date);
}

/**
* 取得日期前一天的日期字符串,格式:"yyyy-MM-dd"
*
* @param date
* @return
*/
public static String getLastDayStr(String dateStr) {
Calendar calendar = Calendar.getInstance();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Date date = new Date();
try {
date = df.parse(dateStr);
} catch (ParseException e) {
log.error("getLastDayStr()日期转换异常{}" + e);
}
calendar.setTime(date);
calendar.add(Calendar.DAY_OF_MONTH, -1);
date = calendar.getTime();
return df.format(date);
}

/**
* 取得日期的相对的日期字符串,格式:"yyyy-MM-dd"
*
* @param date
* @return
*/
public static String getDateStr(String dateStr, int dayNum) {
Calendar calendar = Calendar.getInstance();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Date date = new Date();
try {
date = df.parse(dateStr);
} catch (ParseException e) {
log.error("getLastDayStr()日期转换异常{}" + e);
}
calendar.setTime(date);
calendar.add(Calendar.DAY_OF_MONTH, dayNum);
date = calendar.getTime();
return df.format(date);
}

/**
* 转换日历对象为日期字符串
*
* @author xjb
* @param Calendar
*            字符串
* @return Date 日期(yyyy-MM-dd HH:mm:ss)
*/
public static Date convertCalToDate(Calendar da) {
Date date = da.getTime();
return date;
}

/**
* 取得当前日期字符串,格式:"yyyy-MM-dd HH:mm:ss"
*
* @return String
*/
public static String getCurrentDateTime() {
Calendar calendar = Calendar.getInstance();
Date date = calendar.getTime();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String currDate = df.format(date);
return currDate;
}

/**
* 取得当前日期字符串,格式:"yyyy-MM-dd HH:mm:ss"
*
* @return String
*/
public static String getDateTime(Date date) {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateStr = df.format(date);
return dateStr;
}

/**
* 转换日历对象为时间对象
*
* @param cal
* @return Date
*/
public static Date convertCalendarToDate(Calendar cal) {
long day = cal.getTimeInMillis();
day = (day + TZ.getOffset(day)) / DAY_TIME;
day = day * DAY_TIME;
return new Date(day - TZ.getOffset(day));
}

/**
* 按天比较两个时间对象的大小
*
* @param arg0
* @param arg1
* @return
*/
public static int compareDay(Date arg0, Calendar arg1) {
int firstDay = (int) ((arg0.getTime() + TZ.getOffset(arg0.getTime())) / DAY_TIME);
int secendDay = (int) ((arg1.getTimeInMillis() + TZ.getOffset(arg0
.getTime())) / DAY_TIME);
return firstDay - secendDay;
}

/**
* 计算两个时间对象相差的天数
*
* @param arg0
* @param arg1
* @return
*/
public static int calcWorkdayCount(Date arg0, Date arg1) {
if (arg0 == null || arg1 == null)
return 0;
int firstDay = (int) (arg0.getTime() / DAY_TIME);
int secendDay = (int) (arg1.getTime() / DAY_TIME);
return (firstDay - secendDay) + 1;
}

/**
* 累加日期对象的时间
*
* @param val
* @param year
* @param month
* @param day
* @return
*/
public static Date addDate(Date val, int year, int month, int day) {
Calendar cal = Calendar.getInstance();
cal.setTime(val);
if (year != 0)
cal.add(Calendar.YEAR, year);
if (month != 0)
cal.add(Calendar.MONTH, month);
if (day != 0)
cal.add(Calendar.DATE, day);
return convertCalendarToDate(cal);
}

/**
* 比较当前时间在指定时间段是否过半
*
* @param arg0
* @param arg1
* @return
*/
public static double compareDayToHalf(Date arg0, Date arg1, Calendar arg2) {
double firstDay = arg0.getTime() / DAY_TIME;
double secendDay = arg1.getTime() / DAY_TIME;
double current = arg2.getTimeInMillis() / DAY_TIME;
return ((secendDay - firstDay + 1) / 2 + firstDay) - current;
}

/**
*
* @Title:getDayNum
* @Description: TODO
* @date 2015年2月11日 上午9:48:05
* @param dateStr
*            时间
* @return 此月的天数
*/
public static int getDayNum(String dateStr) {
Calendar c = Calendar.getInstance();// 获得一个日历的实例
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
Date date = null;
try {
date = sdf.parse(dateStr);
} catch (Exception e) {
e.printStackTrace();
}
c.setTime(date);// 设置日历时间
c.set(Calendar.MONTH, c.get(Calendar.MONTH) + 1);
c.set(Calendar.DAY_OF_MONTH, 1);
c.set(Calendar.DATE, c.get(Calendar.DATE) - 1);
// int dayNum = c.get(Calendar.DAY_OF_MONTH);
return c.get(Calendar.DAY_OF_MONTH);
}

/**
* @Title:getWeekDiff
* @Description: 获得2个日期的周数差
* @author yuanqi.jing
* @date 2015年6月8日 下午4:48:05
* @param d1
* @param d2
* @return
*/
public static int getWeekDiff(String d1, String d2) {
long diff = 0;
int diffWeek = 0;
try {
Date date1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").parse(d1);
Date date2 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").parse(d2);

diff = Math.abs(date2.getTime() - date1.getTime());
diffWeek = (int) (diff/1000/60/60/24/7);
} catch (ParseException e) {
log.error("String 转 Date异常{}" + e.getMessage());
}
return diffWeek;
}

public static int getWeekOfYear(String dateStr) {
Calendar c = Calendar.getInstance();
c.setFirstDayOfWeek(Calendar.MONDAY);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = null;
try {
date = sdf.parse(dateStr);
} catch (Exception e) {
e.printStackTrace();
}
c.setTime(date);// 设置日历时间
return c.get(Calendar.WEEK_OF_YEAR);
}

// public static void main(String[] args) {
// long diffWeek = DateUtils.getWeekDiff("1990-01-01", "1990-01-22");
// System.out.println("diffWeek:" + diffWeek);
// }


}
分享到:
评论

相关推荐

    Java日期工具类

    Java日期工具类 1、日期的各种格式化 2、获取当前年度 3、获取当前月份 4、获取当前天号数 5、获取当前时间往前推一个月的时间 6、获取上个月("MMM yyyy") 7、获取上个月("yyyymm") 8、获取上个月("yyyy-mm") 9、...

    java日期工具类

    java日期工具类,java日期工具类,java日期工具类,java日期工具类

    日期工具类源码

    日期工具类

    原创好用实用的日期工具类

    强大的好用的原创日期工具类: 1.返回当前日期字符串 yyyy-MM-dd 2.返回当前日期字符串 yyyy-MM-dd HH:mm:ss 3.根据指定时间格式解析日期字符串为Date对象 4.根据默认时间格式解析日期字符串为Date对象 5.根据指定...

    史上最全的日期工具类

    各种你能想到的日期计算,操作。包含常见的年月日间隔计算、比较、格式化

    日期工具类-获取星座、生肖和各种日期格式的处理与获取

    日期工具类-获取星座、生肖和各种日期格式的处理与获取 日期工具类-获取星座、生肖和各种日期格式的处理与获取 日期工具类-获取星座、生肖和各种日期格式的处理与获取

    javascript 日期工具类

    导入js文件 用法 var newDate=DateUtil.Format("yyyy/MM/dd",new Date()); 第一个参数可以根据需要改

    DateUtil(日期工具类)

    DateUtil(日期工具类)DateUtil(日期工具类)DateUtil(日期工具类)DateUtil(日期工具类)

    常用日期工具类

    常用的日期工具类,包括日期格式化,天数计算,获取某个时间的日期等等

    DateUtil日期工具类

    DateUtil 日期工具类

Global site tag (gtag.js) - Google Analytics