java时间戳计算_时间处理函数工具分享(时间戳计算)

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.Date;

import java.util.GregorianCalendar;

import java.util.TimeZone;

/**

* 时间处理函数

*

* @20080509 15:50

*/

public class DateUtil {

private static final String DEFAULT_PATTERN = "yyyy-MM-dd HH:mm:ss";

public static final String TIME_YEAR = "yyyy";

public static final String TIME_MONEN = "MM";

public static final String TIME_DAY = "dd";

public static String getDate(String interval, Date starttime, String pattern) {

Calendar temp = Calendar.getInstance(TimeZone.getDefault());

temp.setTime(starttime);

temp.add(temp.MONTH, Integer.parseInt(interval));

SimpleDateFormat sdf = new SimpleDateFormat(pattern);

return sdf.format(temp.getTime());

}

/**

* 将字符串类型转换为时间类型

*

* @return

*/

public static Date str2Date(String str) {

Date d = null;

SimpleDateFormat sdf = new SimpleDateFormat(DEFAULT_PATTERN);

try {

d = sdf.parse(str);

} catch (Exception e) {

e.printStackTrace();

}

return d;

}

public static Date str2Date(String str, String pattern) {

Date d = null;

SimpleDateFormat sdf = new SimpleDateFormat(pattern);

try {

d = sdf.parse(str);

} catch (Exception e) {

e.printStackTrace();

}

return d;

}

/**

* 将时间格式化

*

* @return

*/

public static Date DatePattern(Date date) {

SimpleDateFormat sdf = new SimpleDateFormat(DEFAULT_PATTERN);

try {

String dd = sdf.format(date);

date = str2Date(dd);

} catch (Exception e) {

e.printStackTrace();

}

return date;

}

/**

* 将时间格式化

*/

public static Date DatePattern(Date date, String pattern) {

SimpleDateFormat sdf = new SimpleDateFormat(pattern);

try {

String dd = sdf.format(date);

date = str2Date(dd, pattern);

} catch (Exception e) {

e.printStackTrace();

}

return date;

}

public static String date2Str(Date date) {

SimpleDateFormat sdf = new SimpleDateFormat(DEFAULT_PATTERN);

return sdf.format(date);

}

public static String date2Str(Date date, String format) {

SimpleDateFormat sdf = new SimpleDateFormat(format);

return sdf.format(date);

}

/**

* 获取昨天

*

* @param date

* @return

* @throws Exception

*/

public static Date getLastDate(Date date) {

Calendar calendar = Calendar.getInstance(TimeZone.getDefault());

calendar.setTime(date);

calendar.add(calendar.DATE, -1);

return str2Date(date2Str(calendar.getTime()));

}

/**

* 获取前几天

* @param date

* @return

*/

public static Date getBeforeDate(Date date,int dates) {

Calendar calendar = Calendar.getInstance(TimeZone.getDefault());

calendar.setTime(date);

calendar.add(calendar.DATE, -dates);

return str2Date(date2Str(calendar.getTime()));

}

/**

* 获取上周第一天(周一)

*

* @param date

* @return

* @throws Exception

*/

public static Date getLastWeekStart(Date date) {

Calendar calendar = Calendar.getInstance(TimeZone.getDefault());

calendar.setTime(date);

int i = calendar.get(calendar.DAY_OF_WEEK) - 1;

int startnum = 0;

if (i == 0) {

startnum = 7 + 6;

} else {

startnum = 7 + i - 1;

}

calendar.add(calendar.DATE, -startnum);

return str2Date(date2Str(calendar.getTime()));

}

/**

* 获取上周最后一天(周末)

*

* @param date

* @return

* @throws Exception

*/

public static Date getLastWeekEnd(Date date) {

Calendar calendar = Calendar.getInstance(TimeZone.getDefault());

calendar.setTime(date);

int i = calendar.get(calendar.DAY_OF_WEEK) - 1;

int endnum = 0;

if (i == 0) {

endnum = 7;

} else {

endnum = i;

}

calendar.add(calendar.DATE, -(endnum - 1));

return str2Date(date2Str(calendar.getTime()));

}

/**

* 根据年和月得到天数

* @param num 月

* @param year 年

* @return

*/

public static int getday(int num,int year){

if(num==1 || num==3 || num==5 || num==7 || num==8 || num==10 || num==12){

return 31;

}else if(num==2){

//判断是否为闰年

if(year%400==0 || (year%4==0 && year%100!=0)){

return 29;

}else{

return 28;

}

}else{

return 30;

}

}

/*

* 计算当前日期距离下个月还有多少天

*/

public static int getdaymis(Date time){

int year = Integer.parseInt(

new SimpleDateFormat(TIME_YEAR).format(time));//年

int mm = Integer.parseInt(

new SimpleDateFormat(TIME_MONEN).format(time));//月

int dd = Integer.parseInt(

new SimpleDateFormat(TIME_DAY).format(time));//日

//获取当前年月的总天数

int sdd = getday(mm,year);

return sdd-dd;

}

/**

* 日期转秒数

* @param dateString

* @return

*/

public static long getTime(String dateString) {

long time = 0;

try {

Date ret = null;

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

ret = sdf.parse(dateString);

time = ret.getTime()/1000;

} catch (Exception e) {

}

return time;

}

/**

* 精确计算时间差,精确到日

* @param fistill 起始日期

* @param nowtime 结束日期

* @param type type为1返回年月日(如:2年3个月零5天) 否则返回总的天数

* @return

*/

public static String patienage(Date fistill,Date nowtime,Integer type){

int fyear = Integer.parseInt(

new SimpleDateFormat(TIME_YEAR).format(fistill));//起始年

int fmm = Integer.parseInt(

new SimpleDateFormat(TIME_MONEN).format(fistill));//起始月

int fdd = Integer.parseInt(

new SimpleDateFormat(TIME_DAY).format(fistill));//起始日

int nyear = Integer.parseInt(

new SimpleDateFormat(TIME_YEAR).format(nowtime));//结束年

int nmm = Integer.parseInt(

new SimpleDateFormat(TIME_MONEN).format(nowtime));//结束月

int ndd = Integer.parseInt(

new SimpleDateFormat(TIME_DAY).format(nowtime));//结束日

int cyear = nyear - fyear;

int cmm = nmm - fmm;

int cdd = ndd - fdd;

int zyear = 0;

int zmm = 0;

int zdd = 0;

int countddd = 0;  //年月日累计天数

if(cdd<0){

if(cmm<0){

zyear = cyear - 1;

zmm = (cmm + 12)-1;

int dd = getday(zmm,nyear-1);

zdd = dd + cdd;

countddd = zyear*365+zmm*30+zdd;

}else if(cmm==0){

zyear = cyear - 1;

zmm = 12-1;

int dd = getday(zmm,nyear-1);

zdd = dd + cdd;

countddd = zyear*365+zmm*30+zdd;

}else{

zyear = cyear;

zmm = cmm - 1;

int dd = getday(zmm,nyear);

zdd = dd + cdd;

countddd = zyear*365+zmm*30+zdd;

}

}else if(cdd==0){

if(cmm<0){

zyear = cyear - 1;

zmm = cmm + 12;

zdd = 0;

countddd = zyear*365+zmm*30;

}else if(cmm==0){

zyear = cyear;

zmm = 0;

zdd = 0;

countddd = zyear*365+zmm*30;

}else{

zyear = cyear;

zmm = cmm;

zdd = 0;

countddd = zyear*365+zmm*30;

}

}else{

if(cmm<0){

zyear = cyear - 1;

zmm = cmm + 12;

zdd = cdd;

countddd = zyear*365+zmm*30+zdd;

}else if(cmm==0){

zyear = cyear;

zmm = 0;

zdd = cdd;

countddd = zyear*365+zmm*30+zdd;

}else{

zyear = cyear;

zmm = cmm;

zdd = cdd;

countddd = zyear*365+zmm*30+zdd;

}

}

String ptime = null;

if(zdd!=0){

if(zmm!=0){

if(zyear!=0){

ptime = zyear+"年"+zmm+"个月"+"零"+zdd+"天";

}else{

ptime = zmm+"个月"+"零"+zdd+"天";

}

}else{

if(zyear!=0){

ptime = zyear+"年"+"零"+zdd+"天";

}else{

ptime = zdd+"天";

}

}

}else{

if(zmm!=0){

if(zyear!=0){

ptime = zyear+"年"+zmm+"个月";

}else{

ptime = zmm+"个月";

}

}else{

if(zyear!=0){

ptime = zyear+"年";

}else{

ptime = null;

}

}

}

if(type==1){

return ptime;   //返回年月日(如:2年3个月零5天)

}else{

return String.valueOf(countddd);  //返回总天数

}

}

/**

* 得到月数

* @param year 年数差

* @param month 月数差

* @return

*/

public static int getCmm(Integer year,Integer month){

int zmm = 0;

if(month < 0){

zmm = (month + 12)+(year-1)*12;

}else if(month == 0){

zmm = year*12;

}else{

zmm = year*12+month;

}

return zmm;

}

/**

* 改更现在时间

*/

public static Date changeDate(String type, int value) {

Calendar calendar = Calendar.getInstance(TimeZone.getDefault());

if (type.equals("month")) {

calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH) + value);

} else if (type.equals("date")) {

calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) + value);

}

return calendar.getTime();

}

/**

* 更改时间

*/

public static Date changeDate(Date date, String type, int value) {

if (date != null) {

// Calendar calendar = Calendar.getInstance(TimeZone.getDefault());

Calendar calendar = new GregorianCalendar();

calendar.setTime(date);

// Calendar calendar = Calendar.

if (type.equals("month")) {

calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH) + value);

} else if (type.equals("date")) {

calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) + value);

} else if (type.endsWith("year")) {

calendar.set(Calendar.YEAR, calendar.get(Calendar.YEAR) + value);

}

return calendar.getTime();

}

return null;

}

/**

* haoxw 比较时间是否在这两个时间点之间

*

* @param time1

* @param time2

* @return

*/

public static boolean checkTime(String time1, String time2) {

Calendar calendar = Calendar.getInstance();

Date date1 = calendar.getTime();

Date date11 = DateUtil.str2Date(DateUtil.date2Str(date1, "yyyy-MM-dd") + " " + time1);// 起始时间

Calendar c = Calendar.getInstance();

c.add(Calendar.DATE, 1);

Date date2 = c.getTime();

Date date22 = DateUtil.str2Date(DateUtil.date2Str(date2, "yyyy-MM-dd") + " " + time2);// 终止时间

Calendar scalendar = Calendar.getInstance();

scalendar.setTime(date11);// 起始时间

Calendar ecalendar = Calendar.getInstance();

ecalendar.setTime(date22);// 终止时间

Calendar calendarnow = Calendar.getInstance();

if (calendarnow.after(scalendar) && calendarnow.before(ecalendar)) {

return true;

} else {

return false;

}

}

/**

* haoxw 比较时间是否在这两个时间点之间

*

* @param date11

* @param date22

* @return

*/

public static boolean checkTime(Date date11, Date date22) {

Calendar scalendar = Calendar.getInstance();

scalendar.setTime(date11);// 起始时间

Calendar ecalendar = Calendar.getInstance();

ecalendar.setTime(date22);// 终止时间

Calendar calendarnow = Calendar.getInstance();

if (calendarnow.after(scalendar) && calendarnow.before(ecalendar)) {

return true;

} else {

return false;

}

}

public static boolean checkDate(String date1, String date2) {

Date date11 = DateUtil.str2Date(date1, "yyyy-MM-dd HH:mm:ss");// 起始时间

Date date22 = DateUtil.str2Date(date2, "yyyy-MM-dd HH:mm:ss");// 终止时间

Calendar scalendar = Calendar.getInstance();

scalendar.setTime(date11);// 起始时间

Calendar ecalendar = Calendar.getInstance();

ecalendar.setTime(date22);// 终止时间

Calendar calendarnow = Calendar.getInstance();

System.out.println(date11.toString());

System.out.println(date22.toString());

System.out.println(scalendar.toString());

System.out.println(ecalendar.toString());

System.out.println(calendarnow.toString());

if (calendarnow.after(scalendar) && calendarnow.before(ecalendar)) {

return true;

} else {

return false;

}

}

/**

* 获取interval天之前的日期

*

* @param interval

* @param starttime

* @param pattern

* @return

*/

public static Date getIntervalDate(String interval, Date starttime, String pattern) {

Calendar temp = Calendar.getInstance();

temp.setTime(starttime);

temp.add(temp.DATE, Integer.parseInt(interval));

SimpleDateFormat sdf = new SimpleDateFormat(pattern);

String shijian = sdf.format(temp.getTime());

return str2Date(shijian);

}

public static Date formatDate(Date date){

SimpleDateFormat bartDateFormat =

new SimpleDateFormat("yyyy-MM-dd");

System.out.println(bartDateFormat.format(date));

SimpleDateFormat bartDateFormat1 =new SimpleDateFormat("yyyy-MM-dd");

try {

Date date1 = bartDateFormat1.parse(bartDateFormat.format(date));

} catch (ParseException e) {

e.printStackTrace();

}

System.out.println(date.getTime());

return date;

}

public static void main(String arf[]) {

/*String time1 = "2009-05-07 19:20:00";

String time2 = "2009-05-08 19:30:00";

DateUtil d = new DateUtil();

System.out.println(d.checkDate(time1, time2));

System.out.println(d.date2Str(new Date()));*/

//System.out.println(d.getIntervalDate("-3", new Date(), DEFAULT_PATTERN));

Calendar calendar = Calendar.getInstance(TimeZone.getDefault());

System.out.println(calendar.toString());

System.out.println(DateUtil.str2Date("20090731","yyyyMMdd"));

System.out.println(DateUtil.getBeforeDate(new Date(),2 ));

System.out.println(DateUtil.DatePattern(new Date()));

SimpleDateFormat bartDateFormat =

new SimpleDateFormat("yyyy-MM-dd");

Date date = new Date();

System.out.println("date;"+bartDateFormat.format(date));

SimpleDateFormat bartDateFormat1 =new SimpleDateFormat("yyyy-MM-dd");

try {

Date date1 = bartDateFormat1.parse(bartDateFormat.format(date));

System.out.println("日期:"+date1);

} catch (ParseException e) {

e.printStackTrace();

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值