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

代码如下:

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)

相关推荐

  • java时间戳转日期格式的实现代码

    如下所示: 复制代码 代码如下: String beginDate="1328007600000"; SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); String sd = sdf.format(new Date(Long.parseLong(beginDate))); System.out.println(sd);

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

    复制代码 代码如下: 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 { pri

  • php自定义时间转换函数示例

    本文实例讲述了php自定义时间转换函数.分享给大家供大家参考,具体如下: 我们可以把经常用到的函数封装起来,在抽象类中,然后继承来使用. /** * 时间转时间戳 * @param object $str * @return timestamp */ function toTime($str, $flag = false) { $year = substr($str, 0, 4); $month = substr($str, 5, 2); $day = substr($str, 8, 2); $

  • React Native时间转换格式工具类分享

    本文实例为大家分享了React Native时间转换格式工具类,供大家参考,具体内容如下 class DateUtil{ /** * 例如:2017-06-28 10:48:46转成date类, * 可把- replace成/ * @param dateString * @return Date */ static parserDateString(dateString){ if(dateString){ let regEx = new RegExp("\\-","gi&qu

  • php把时间戳转换成多少时间之前函数的实例

    如下所示: function wordTime($time) { $time = (int) substr($time, 0, 10); $int = time() - $time; $str = ''; if ($int <= 2){ $str = sprintf('刚刚', $int); }elseif ($int < 60){ $str = sprintf('%d秒前', $int); }elseif ($int < 3600){ $str = sprintf('%d分钟前', f

  • web开发之对比时间大小的工具函数的实例详解

    web开发之对比时间大小的工具函数的实例详解 js时间大小比较,格式yyyy-MM-dd hh:mm:ss 把时间比较封装成一个工具函数: /** * 比较两个时间的大小 * 时间格式:yyyy-MM-dd hh:mm:ss * @param {Object} beginTime 开始时间 * @param {Object} endTime 结束时间 */ var getDataLarge = function(beginTimeString,endTimeString){ var b = be

  • Python基础学习之时间转换函数用法详解

    本文实例讲述了Python基础学习之时间转换函数用法.分享给大家供大家参考,具体如下: 前言 python的时间格式分为多种,几种格式之间的转换方法时常是我们遇到的而且是经常忘记的点,python不像php,时间字符串和datetime是一起的,只需要strtotime和date函数就可以相互转化.虽然网上已经有很多python时间转换的文章,但是由于作者本人经常做海外业务,需要各种时区之间的转换,所以这篇文章会对按时区转换各种时间格式做一个总结. 转换方法图示(图片转自网络): 一.字符串转时

  • PHP常用函数之根据生日计算年龄功能示例

    本文实例讲述了PHP常用函数之根据生日计算年龄功能.分享给大家供大家参考,具体如下: /** * 根据出生年月日计算出年龄 * @param $birth_year * @param $birth_month * @param $birth_day * @return int */ function getAgeByBirth($birth_year,$birth_month,$birth_day){ if(empty($birth_year) || empty($birth_month) ||

  • python时间日期函数与利用pandas进行时间序列处理详解

    python标准库包含于日期(date)和时间(time)数据的数据类型,datetime.time以及calendar模块会被经常用到. datetime以毫秒形式存储日期和时间,datetime.timedelta表示两个datetime对象之间的时间差. 下面我们先简单的了解下python日期和时间数据类型及工具 给datetime对象加上或减去一个或多个timedelta,会产生一个新的对象 from datetime import datetime from datetime impo

  • Android进阶之使用时间戳计算时间差

    本文实例为大家分享了Android使用时间戳计算时间差的具体代码,供大家参考,具体内容如下 因当前项目需要计算时间差,进行数据处理,所以在Csdn上找了一下,之后修修补补是可以用的,建议大家如果用到项目中的话,可能需要把老的时间戳或者时间format存储在文件或者sp中,之后用于判断,然后进行自己的逻辑处理. Effect : Log执行: 注:这个可以自己简单封装下,比较简单. MainActivity : package com.bakheet.effect.time; import and

  • MySQL 获得当前日期时间的函数小结

    1.1 获得当前日期+时间(date + time)函数:now() mysql> select now(); +---------------------+ | now() | +---------------------+ | 2008-08-08 22:20:46 | +---------------------+ 除了 now() 函数能获得当前的日期时间外,MySQL 中还有下面的函数: current_timestamp() ,current_timestamp ,localtime

随机推荐