时间处理

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.sql.Timestamp;


/**
* 时间处理类
* @author jxialiang
*
*/
public class DateTime {

/**
* 获取当时时间
* @return 返回int型日期
*/
public static int getNowDatetime() {
return (int)(System.currentTimeMillis()/1000);
}


/**
* 获取当时时间
*
* @return 返回Timestamp型日期
*/
public static Timestamp getNowTDatetime() {
Timestamp datetime = new Timestamp(System.currentTimeMillis());
return datetime;
}

/**
* 获取当前时间 string 格式
* @return
*/
public static String GetDate(){
Calendar calendar = Calendar.getInstance();
SimpleDateFormat simpledateformat = new SimpleDateFormat("yyyy-MM-dd");
return simpledateformat.format(calendar.getTime());
}


/**
* 以yyyy年MM月dd日的格式转换日期
* @param itimeme
* @return
*/
public static String formatDateCN(java.util.Date itimeme) {
return formatTime(itimeme, "yyyy年MM月dd日");
}

/**
* 以MM月dd日的格式转换日期
* @param time
* @return
*/
public static String formatDateMD(java.util.Date time) {
return formatTime(time, "MM月dd日");
}

/**
* 以MM月dd日的格式转换日期
* @param time
* @return
*/
public static String formatDateDouble(java.util.Date time) {
return formatTime(time, "MM.dd");
}

/**
* 以MM月dd日的格式转换日期
* @param time
* @return
*/
public static String formatDateMM(java.util.Date time) {
return formatTime(time, "MM");
}
/**
* 以MM月dd日的格式转换日期
* 截掉03月前的0和01日的0
* 如3月1日
*/
public static String formatDateMDD(){
String today = DateTime.formatDateMD(new Date());
int month = Integer.parseInt(today.substring(0, today.indexOf("月")));
int day = Integer.parseInt(today.substring(today.indexOf("月")+1, today.indexOf("日")));
String currentday = month+"月"+day+"日";
return currentday;
}

/**
* 把date格式的时间转换成int格式(精确到秒)
* @param date
* @return
*/
public static int getTimeMillis(Date date){
Calendar aCalendar=Calendar.getInstance();
if(date!=null){
aCalendar.setTime(date);
return (int) (aCalendar.getTimeInMillis()/1000);
}
return 0;
}

/**
* 把String格式的时间转换成int格式(精确到秒)
* @param date
* @return
*/
public static int getTimeMillis(String date){
Calendar aCalendar=Calendar.getInstance();
if(date!=null){
aCalendar.setTime(DateTime.formatString(date));
return (int) (aCalendar.getTimeInMillis()/1000);
}
return 0;
}

/**
* 返回今天昨天前天…………
* @param datemill
* @return
*/
public static String formatDateCom(int datemill){
Date date = new Date(((long)datemill)*1000);
return DateTime.formatDateCom(date);
}


public static Date formatString(String date){
DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date dates = null;
try
{
dates = format.parse(date);
} catch (ParseException e) {
e.printStackTrace();
}
return dates;
}

public static Date formatStringymdhm(String date){
DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date dates = null;
try
{
dates = format.parse(date);
} catch (ParseException e) {
e.printStackTrace();
}
return dates;
}

/**
* 返回今天昨天前天…………
* @param date
* @return
*/
public static String formatDateCom(Date date){
if(date==null){
return "时间不明";
}
Calendar aCalendar=Calendar.getInstance();
int y_x=aCalendar.get(Calendar.YEAR);
int m_x=aCalendar.get(Calendar.MONTH)+1;
int d_x=aCalendar.get(Calendar.DATE);
aCalendar.setTime(date);
int y_y=aCalendar.get(Calendar.YEAR);
int m_y=aCalendar.get(Calendar.MONTH)+1;
int d_y=aCalendar.get(Calendar.DATE);
if(y_x==y_y && m_x==m_y){
if(d_x==d_y){
return "今天";
}if(d_x==d_y+1){
return "昨天";
}if(d_x==d_y+2){
return "前天";
}
}
return formatTime(date, "yyyy-MM-dd");
}

/**
* 获得今天凌晨的时间
* @return
*/
public static int getTodayMillis(){
int time = DateTime.getNowDatetime();
Calendar aCalendar = Calendar.getInstance();
SimpleDateFormat dateFormat=new SimpleDateFormat ("yyyy-MM-dd");
try {
Date dateNow = dateFormat.parse(aCalendar.get(Calendar.YEAR)+"-"+(aCalendar.get(Calendar.MONTH)+1)+"-"+aCalendar.get(Calendar.DATE));
time = (int) (((long)dateNow.getTime())/1000);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return time;
}

/**
* 计算结束时间与开始时间相差的毫秒数
* @param end 结束时间
* @param start 开始时间
* @return
*/
public static long getMillis(Date end,Date start){
Calendar aCalendar=Calendar.getInstance();
if(end!=null){
aCalendar.setTime(end);
}
long endMillis=aCalendar.getTimeInMillis();
if(start!=null){
aCalendar.setTime(start);
}else{
aCalendar.setTime(new Date());
}
long startMillis=aCalendar.getTimeInMillis();
return endMillis-startMillis;
}

/**
* 计算某个时间与此时相差的毫秒数
* @param date
* @return
*/
public static long getMillis(Date date){
return getMillis(null,date);
}

/**
* 计算某个时间与此时相差的秒数
* @param date
* @return
*/
public static int getMillis(int intdate){
return getNowDatetime()-intdate;
}

/**
* 获得动态现实的时间
* @param date
* @return
*/
public static String showTime(int intdate, String format){
int number=getMillis(intdate);
String timeago="";
if(number>=0){
if(number<=60){
timeago=number+"秒钟前";
}else if(number<=3600){
timeago=number/60+"分钟前";
}else if(number<=86400){
timeago=number/3600+"小时前";
}else if(number<=172800){
timeago="一天前";
}else if(number<=259200){
timeago="两天前";
}else if(number<=345600){
timeago="三天前";
}else{
timeago=DateTime.formatTime(intdate, format);
}
}else{
timeago=DateTime.formatTime(intdate, format);
}
return timeago;
}

/**
* 以yyyy-MM-dd的格式转换日期
* @param time
* @return
*/
public static String formatDateEN(java.util.Date time) {
return formatTime(time, "yyyy-MM-dd");
}

/**
* 以yyyy-MM-dd HH:mm:ss的格式显示时间
* @param time
* @return
*/
public static String formatTime(java.util.Date time) {
return formatTime(time, "yyyy-MM-dd HH:mm:ss");
}

/**
* 以yyyy-MM-dd的格式显示时间
* @param datemill
* @return
*/
public static String formatTime(int datemill){
Date date = new Date(((long)datemill)*1000);
return formatTime(date, "yyyy-MM-dd");
}

/**
* @param datemill
* @return
*/
public static String formatTime(int datemill, String format){
Date date = new Date(((long)datemill)*1000);
return formatTime(date, format);
}

/**
* 以yyyy-MM-dd HH:mm:ss的格式显示时间
* @param datemill
* @return
*/
public static String formatTimeTemp(int datemill){
Date date = new Date(((long)datemill)*1000);
return formatTime(date, "yyyy-MM-dd HH:mm:ss");
}

/**
* 以yyyy-MM-dd HH:mm:ss的格式显示时间
* @param datemill
* @return
*/
public static Date formatDateTime(int datemill){
Date date = new Date(((long)datemill)*1000);
return date;
}

/**
* 字符串赚date类型
* @param dateformat
* @return
*/
@SuppressWarnings("finally")
public static Date formatDate(String dateformat){
SimpleDateFormat sd_YMD = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat sd_YM = new SimpleDateFormat("yyyy-MM");
SimpleDateFormat sd_NYR = new SimpleDateFormat("yyyy年MM月dd日");
SimpleDateFormat sd_NY = new SimpleDateFormat("yyyy年MM月");
SimpleDateFormat sd_XX = new SimpleDateFormat("yyyy/MM/dd");
SimpleDateFormat sd_X = new SimpleDateFormat("yyyy/MM");
SimpleDateFormat sd_Y = new SimpleDateFormat("yyyy");
SimpleDateFormat sd_YY = new SimpleDateFormat("yyyy年");
String p_YMD = "^\\d{4}-\\d{1,2}-\\d{1,2}$";
String p_YM = "^\\d{4}-\\d{1,2}$";
String p_NYR = "^\\d{4}年\\d{1,2}月\\d{1,2}日$";
String p_NY = "^\\d{4}年\\d{1,2}月$";
String p_XX = "^\\d{4}/\\d{1,2}/\\d{1,2}$";
String p_X = "^\\d{4}/\\d{1,2}$";
String p_Y = "^\\d{4}$";
String p_YY = "^\\d{4}年$";
Date date= null;
try {
Pattern pattern = Pattern.compile(p_YMD, Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(dateformat);
if(matcher.find()){
date = sd_YMD.parse(dateformat);
}
pattern = Pattern.compile(p_YM, Pattern.CASE_INSENSITIVE);
matcher = pattern.matcher(dateformat);
if(matcher.find()){
date = sd_YM.parse(dateformat);
}
pattern = Pattern.compile(p_NYR, Pattern.CASE_INSENSITIVE);
matcher = pattern.matcher(dateformat);
if(matcher.find()){
date = sd_NYR.parse(dateformat);
}
pattern = Pattern.compile(p_NY, Pattern.CASE_INSENSITIVE);
matcher = pattern.matcher(dateformat);
if(matcher.find()){
date = sd_NY.parse(dateformat);
}
pattern = Pattern.compile(p_XX, Pattern.CASE_INSENSITIVE);
matcher = pattern.matcher(dateformat);
if(matcher.find()){
date = sd_XX.parse(dateformat);
}
pattern = Pattern.compile(p_X, Pattern.CASE_INSENSITIVE);
matcher = pattern.matcher(dateformat);
if(matcher.find()){
date = sd_X.parse(dateformat);
}
pattern = Pattern.compile(p_Y, Pattern.CASE_INSENSITIVE);
matcher = pattern.matcher(dateformat);
if(matcher.find()){
date = sd_Y.parse(dateformat);
}
pattern = Pattern.compile(p_YY, Pattern.CASE_INSENSITIVE);
matcher = pattern.matcher(dateformat);
if(matcher.find()){
date = sd_YY.parse(dateformat);
}
} catch (ParseException e) {
}finally{
return date;
}
}

/**
* 字符串转变成date
* @param dateformat
* @return
*/
public static Date formatDateL(String dateformat){
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
return sd.parse(dateformat);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}

/**
* 将时间转换成指定格式的字符串
* @param time Date
* @param format 格式描述:例如:yyyy-MM-dd yyyy-MM-dd HH:mm:ss
* @return
*/
public static String formatTime(java.util.Date time, String format) {
if (time != null) {
java.text.SimpleDateFormat DATE_FORMAT = new java.text.SimpleDateFormat(format);
return DATE_FORMAT.format(time);
} else {
return "";
}
}

/**
* 显示短时间
* @param time java.util.Date
* @return
*/
public static String formatTimes(java.util.Date time) {
return formatTime(time, "yyyy-MM-dd HH:mm");
}

/**
* 显示超短时间
* @param time
* @return
*/
public static String formatTimess(java.sql.Timestamp time) {
return formatTime(time, "dd日HH:mm");
}

/**
* 获得某年是现在的几年前
* @param date
* @return
*/
public static int getYearsAgo(short year){
short thisyear = Short.parseShort(DateTime.GetDate().substring(0, 4));
int ago = thisyear-year;
if(ago>0){
return ago;
}
return 0;
}

@SuppressWarnings("static-access")
public static boolean isToday(int datetime){
Calendar aCalendar = Calendar.getInstance();
int today = aCalendar.get(aCalendar.DAY_OF_YEAR);
aCalendar.setTime(DateTime.formatDateTime(datetime));
int theday = aCalendar.get(aCalendar.DAY_OF_YEAR);
if(today!=theday){
return false;
}
return true;
}

/**
* 获得某几个月后的日期
* @param sum
* @return
*/
public static int getMonthAfter(int sum){
Calendar aCalendar = Calendar.getInstance();
aCalendar.set(Calendar.MONTH, aCalendar.get(Calendar.MONTH)+sum);
return (int) (aCalendar.getTimeInMillis()/1000);
}

/**
* 获得某个月第一天
* @param sum
* @return
*/
public static int getMonthFirst(int sum){
Calendar aCalendar = Calendar.getInstance();
aCalendar.set(Calendar.MONTH, aCalendar.get(Calendar.MONTH)+sum);
aCalendar.set(Calendar.DAY_OF_MONTH, 1);
aCalendar.set(Calendar.HOUR, 0);
aCalendar.set(Calendar.MINUTE, 0);
aCalendar.set(Calendar.SECOND, 0);
return (int) (aCalendar.getTimeInMillis()/1000)-43200;
}
//给当前时间加一个时间
public static String addDate(String day, int x)
{
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//24小时制
//SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");//12小时制
Date date = null;
try
{
date = format.parse(day);
}
catch (Exception ex)
{
ex.printStackTrace();
}
if (date == null) return "";
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.HOUR_OF_DAY, x);//24小时制
//cal.add(Calendar.HOUR, x);12小时制
date = cal.getTime();
cal = null;
return format.format(date);
}
//给日期减掉一个月
public static String addDays(String day, int x) {
int intYear = Integer.parseInt(day.substring(0, 4));
int intMonth = Integer.parseInt(day.substring(5, 7));
int intDate = Integer.parseInt(day.substring(8, 10));

Calendar cal = Calendar.getInstance();
cal.set(intYear, intMonth - (x+1), intDate);
cal.add(Calendar.DAY_OF_MONTH,0);
Date date = cal.getTime();
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
return df.format(date);
}
//给日期减掉一天
public static String addDay(String day, int x) {
int intYear = Integer.parseInt(day.substring(0, 4));
int intMonth = Integer.parseInt(day.substring(5, 7));
int intDate = Integer.parseInt(day.substring(8, 10));

Calendar cal = Calendar.getInstance();
cal.set(intYear, intMonth - (1), intDate);
cal.add(Calendar.DAY_OF_MONTH,-x);
Date date = cal.getTime();
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
return df.format(date);
}

/**
* 获得某时间段中的天数
* @param sum
* @return
*/
@SuppressWarnings("static-access")
public static int getSomeday(Date end,Date start){
Calendar aCalendar = Calendar.getInstance();
if(end!=null){
aCalendar.setTime(end);
}
int endDate = aCalendar.get(Calendar.DAY_OF_YEAR);
if(start!=null){
aCalendar.setTime(start);
}else{
aCalendar.setTime(new Date());
}
int startDate = aCalendar.get(Calendar.DAY_OF_YEAR);
return endDate-startDate;
}

/**
* 获得5分钟以前的时间
* @param date
* @return
*/
public static Date getSomeMAGO(Date date, int minute){
int time = DateTime.getTimeMillis(date);
time = time-60*minute;
return DateTime.formatDateTime(time);
}
/**
* 将数字转化成日期
* @param x
* @return
*/
public static String outweek(int x){
String[] weeks = {"星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"};
if(x>0&&x<8){
return weeks[x-1];
}
return "未知";
}

/**
* 获得月份和日期相加的数字
* @return
*/
public static String monthAddday(){
Calendar aCalendar = Calendar.getInstance();
int month = aCalendar.get(Calendar.MONTH);
int day = aCalendar.get(Calendar.DAY_OF_MONTH);
int hour = aCalendar.get(Calendar.HOUR_OF_DAY);
return String.valueOf(month+day+1+hour+88);
}

/**
* 获取当前月份
*/
public static int getThisMonth(){
Calendar aCalendar = Calendar.getInstance();
int month = aCalendar.get(Calendar.MONTH);
return month+1;
}

/**
* 获得从开始时间到结束时间的天数
* @param start
* @param end
* @return
*/
public static int getDays(Date start, Date end){
int startInt = DateTime.getTimeMillis(start);
int endInt = DateTime.getTimeMillis(end);
return (endInt-startInt)/(3600*24);
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值