java中各种时间公式
/**
* 返回当前时间
*
* @return 返回当前时间
*/
public static Date getCurrentDateTime() {
java.util.Calendar calNow = java.util.Calendar.getInstance();
java.util.Date dtNow = calNow.getTime();
return dtNow;
} /**
* 返回当前时间的数字
*
* @return 返回当前时间的数字
*/
public static String getCurrentTimeNumber() {
return new SimpleDateFormat("yyyyMMddHHmmss")
.format(new java.util.Date());
}
public static String getCurrentTime() {
return new SimpleDateFormat("yyyy-MM-dd").format(new java.util.Date());
} public static int getCurrentUnixTime() throws Exception {
long epoch = new java.text.SimpleDateFormat("dd/MM/yyyy HH:mm:ss")
.parse("01/01/1970 00:00:00").getTime() / 1000;
return Integer.parseInt(Long.toString(System.currentTimeMillis() / 1000
- epoch));
} public static long getSubDay(Date date2) {
Date d2 = convertToDate(dateParseShortString(new Date()));
Date d1 = convertToDate(dateParseShortString(date2));
long day = (d1.getTime() - d2.getTime()) / (24 * 60 * 60 * 1000);
return day;
} public static long getSubDays(Date date2) {
Date d2 = convertToDateTime(dateParseString(new Date()));
Date d1 = convertToDateTime(dateParseString(date2));
long day = (d1.getTime() - d2.getTime()) / (24 * 60 * 60 * 1000);
return day;
} /**
* @return 返回今天日期,时间部分为0。例如:2006-4-8 00:00:00
*/
public static Date getToday() {
return truncate(new Date(), Calendar.DATE);
} /**
* @return 返回今天日期,秒部分为0。例如:2006-4-8 23:59:00
*/
public static Date getTodayM() {
SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd HH:mm:00");
return stringToDate(s.format(new Date()));
} /**
* @return 返回今天日期,时间部分为23:59:59.999。例如:2006-4-19 23:59:59.999
*/
public static Date getTodayEnd() {
return getDayEnd(new Date());
} /**
* 将字符串转换为日期(不包括时间)
*
* @param dateString
* "yyyy-MM-dd"格式的日期字符串
* @return 日期
*/
public static Date convertToDate(String dateString) {
try {
DateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd",
java.util.Locale.CHINA);
return DATE_FORMAT.parse(dateString);
} catch (ParseException e) {
return null;
}
} /**
* 检查字符串是否为日期格式yyyy-MM-dd
*
* @param dateString
* @return true=是;false=否
*/
public static boolean checkDateString(String dateString) {
return (convertToDate(dateString) != null);
} /**
* 将字符串转换为日期(包括时间)
*
* @param dateString
* "yyyy-MM-dd HH:mm:ss"格式的日期字符串
* @return 日期时间
*/
public static Date convertToDateTime(String dateTimeString) {
try {
DateFormat DATE_TIME_FORMAT = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss", java.util.Locale.CHINA);
return DATE_TIME_FORMAT.parse(dateTimeString);
} catch (ParseException e) {
return null;
}
} public static Date convertToTime(String dateTimeString) {
try {
DateFormat TIME_FORMAT = new SimpleDateFormat("HH:mm:ss",
java.util.Locale.CHINA);
return TIME_FORMAT.parse(dateTimeString);
} catch (ParseException e) {
return null;
}
} /**
* 将字符串转换为日期(包括时间)
*
* @param dateString
* "dd/MM/yyyy HH:mm"格式的日期字符串
* @return 日期
*/
public static Date convertSimpleToDateTime(String dateString) {
try {
return new java.text.SimpleDateFormat("dd/MM/yyyy HH:mm")
.parse(dateString);
} catch (ParseException e) {
return null;
}
} /**
* 检查字符串是否为日期时间格式yyyy-MM-dd HH:mm:ss
*
* @param dateString
* @return true=是;false=否
*/
public static boolean checkDateTimeString(String dateTimeString) {
return (convertToDateTime(dateTimeString) != null);
} /**
* 获取月底
*
* @param year
* 年 4位年度
* @param month
* 月 1~12
* @return 月底的Date对象。例如:2006-3-31 23:59:59.999
*/
public static Date getMonthEnd(int year, int month) {
StringBuffer sb = new StringBuffer(10);
Date date;
if (month < 12) {
sb.append(Integer.toString(year));
sb.append("-");
sb.append(month + 1);
sb.append("-1");
date = convertToDate(sb.toString());
} else {
sb.append(Integer.toString(year + 1));
sb.append("-1-1");
date = convertToDate(sb.toString());
}
date.setTime(date.getTime() - 1);
return date;
} /**
* 获取月底
*
* @param when
* 要计算月底的日期
* @return 月底的Date对象。例如:2006-3-31 23:59:59.999
*/
public static Date getMonthEnd(Date when) {
Assert.notNull(when, "date must not be null !");
Calendar calendar = Calendar.getInstance();
calendar.setTime(when);
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH) + 1;
return getMonthEnd(year, month);
} /**
* 日期格式转换为字符串
*
* @param date
* @return
*/
public static String dateParseString(Date date) {
java.text.DateFormat df = new java.text.SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
return df.format(date);
} /**
* 日期格式转换为字符串
*
* @param date
* @return
*/
public static String dateParseString(Date date, String format) {
if (StringUtils.isEmpty(format)) {
format = "yyyy-MM-dd HH:mm:ss";
}
java.text.DateFormat df = new java.text.SimpleDateFormat(format);
return df.format(date);
}
/**
* 日期格式转换为字符串
*
* @param date
* @return
*/
public static String dateParseShortString(Date date) {
java.text.DateFormat df = new java.text.SimpleDateFormat("yyyy-MM-dd");
return df.format(date);
} /**
* 活动专用
* @param per 期次
* @return
*/
public static String getFormatDateString(int per){
java.text.DateFormat df = new java.text.SimpleDateFormat("yyyy年MM月dd日");
return df.format(DateUtils.addMonths(new Date(), per));
} public static String dateParseShortStringSecend(Date date) {
java.text.DateFormat df = new java.text.SimpleDateFormat("HH:mm:ss");
return df.format(date);
} public static String dateParseShortStringHour(Date date) {
java.text.DateFormat df = new java.text.SimpleDateFormat("HH:mm");
return df.format(date);
} /**
* 老带新用了下这个
* @return
*/
public static String getThisTimeStr(){
java.text.DateFormat df = new java.text.SimpleDateFormat("MM-dd HH:mm");
return df.format(new Date());
}
/**
* 获取给定日的最后一刻。
*
* @param when
* 给定日
* @return 最后一刻。例如:2006-4-19 23:59:59.999
*/
public static Date getDayEnd(Date when) {
Date date = truncate(when, Calendar.DATE);
date = addDays(date, 1);
date.setTime(date.getTime() - 1);
return date;
} /**
* 获取给定日的第一刻。
*
* @param when
* 给定日
* @return 最后一刻。例如:2006-4-19 23:59:59.999
*/
public static Date getDay(Date when) {
Date date = truncate(when, Calendar.DATE);
date = addDays(date, -1);
date.setTime(date.getTime() + 1);
return date;
} /**
* 日期加法
*
* @param when
* 被计算的日期
* @param field
* the time field. 在Calendar中定义的常数,例如Calendar.DATE
* @param amount
* 加数
* @return 计算后的日期
*/
public static Date add(Date when, int field, int amount) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(when);
calendar.add(field, amount);
return calendar.getTime();
} /**
* 计算给定的日期加上给定的天数。
*
* @param when
* 给定的日期
* @param amount
* 给定的天数
* @return 计算后的日期
*/
public static Date addDays(Date when, int amount) { return add(when, Calendar.DAY_OF_YEAR, amount);
} /**
* 计算给定的日期加上给定的分钟数。
*
* @param when
* 给定的日期
* @param amount
* 给定的分钟数
* @return 计算后的日期
*/
public static Date addMinutes(Date when, int amount) { return add(when, Calendar.MINUTE, amount);
} /**
* 计算给定的日期加上给定的秒数。
*
* @param when
* 给定的日期
* @param amount
* 给定的秒数
* @return 计算后的日期
*/
public static Date addSeconds(Date when, int amount) { return add(when, Calendar.SECOND, amount);
} /**
* 计算给定的日期加上给定的月数。
*
* @param when
* 给定的日期
* @param amount
* 给定的月数
* @return 计算后的日期
*/
public static Date addMonths(Date when, int amount) {
return add(when, Calendar.MONTH, amount);
} /**
* 获取当前时段:早上、上午、下午、晚上、凌晨
*
* @return 当前时段
*/
@SuppressWarnings("deprecation")
public static String getTimePeriod() {
String period = "";
Date now = getCurrentDateTime();
int hour = now.getHours();
if (hour >= 0 && hour < 6) {
period = "凌晨";
} else if (hour >= 6 && hour < 8) {
period = "早上";
} else if (hour >= 8 && hour < 12) {
period = "上午";
} else if (hour >= 12 && hour < 18) {
period = "下午";
} else if (hour >= 18) {
period = "晚上";
}
return period;
} /**
*
* @param date
* @param n
* @return
*/
public static Date getTimePriTenDay(Date date, int n) {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
return convertToDateTime(df.format(new Date(date.getTime() + n * 24
* 60 * 60 * 1000)));
} /**
* 将Date对象类型转化为日期(2006-09-17 5:20:5)的字符串
*
* @param Date
* @return String
*/
public static String dateToString(Date date) { try {
if (date != null)
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date);
} catch (Exception e) {
e.printStackTrace();
}
return null;
} /**
* 判断当前日期是否在两个日期之间
*
* @param startDate
* @param endDate
* @return
*/
public static boolean isTodayIn(String startDate, String endDate) {
Date today = DateUtils.parseDate(DateUtils
.dateParseShortString(new Date()));
Date sDate = DateUtils.parseDate(startDate);
Date eDate = DateUtils.parseDate(endDate);
if (today.getTime() >= sDate.getTime()
&& today.getTime() <= eDate.getTime())
return true;
return false;
} /**
* 日期比较
* @param date1 date1>date2 true
* @param date2
* @return
*/
public static boolean dateCompare(Date date1, String date2) {
Date date1_s = DateUtils.parseDate(DateUtils
.dateParseShortString(date1));
Date date2_s = DateUtils.parseDate(date2);
if (date1_s.getTime() >= date2_s.getTime())
return true;
return false; } public static boolean dateCompare2(Date date1, String date2) {
Date date1_s = DateUtils.parseDate(DateUtils
.dateParseShortString(date1));
Date date2_s = DateUtils.parseDate(date2);
if (date1_s.getTime() > date2_s.getTime())
return true;
return false; } /**
* 将String 类型的转化为日期格式(2006-09-17 5:20:5)
*
* @param String
* @return Date
*/
public static Date stringToDate(String dateStr) { try {
if (dateStr != null)
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
.parse(dateStr);
} catch (Exception e) {
e.printStackTrace();
}
return null;
} /**
* 字符串转为时间类型
*
* @param dateStr
* <String>
* @return Date
*/
public static final Date parseDate(String dateStr) { SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); try {
return df.parse(dateStr);
} catch (ParseException e) {
e.printStackTrace();
}
return null;
} public static final Date parseDateByFormat(String dateStr, String format) { SimpleDateFormat df = new SimpleDateFormat(format); try {
return df.parse(dateStr);
} catch (ParseException e) {
e.printStackTrace();
}
return null;
} /**
* 得到具体时间如:几天前;几小时前;几分钟前;几秒钟前
*
* @param time
* 传入一个Date类型的日期
* @return 根据当天当时当秒解析出距离当天当时当秒的字符串 String
*/
public static String getTimeInterval(Date time) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); try {
Long dateDiff = sdf.parse(sdf.format(new Date())).getTime()
- sdf.parse(sdf.format(time)).getTime(); Long day = dateDiff / (24 * 60 * 60 * 1000); if (day > 0) {
return day + "天前";
} Long hour = dateDiff / (60 * 60 * 1000); if (hour > 0) {
return hour + "小时前";
} Long minute = dateDiff / (60 * 1000); if (minute > 0) {
return minute + "分钟前";
} Long second = dateDiff / 1000; return second + "秒前";
} catch (Exception e) {
e.printStackTrace();
return "未知";
}
} /**
* 由当前时间返回yyyy-mm-dd格式的日期字符串
*
* @return String
*/
public static String getStringOfTodayDate() { Date d = new Date();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
return df.format(d);
} /**
*
*
* @return String
*/
public static String getPzStartDate() { Date d = DateUtils.addDays(new Date(), 1);
SimpleDateFormat df = new SimpleDateFormat("yyyy年MM月dd日");
return df.format(d);
} /**
*
*
* @return String
*/
public static String getPzEndDate(int per) {
Date d = DateUtils.add(DateUtils.addDays(new Date(), 1), Calendar.MONTH, per);
SimpleDateFormat df = new SimpleDateFormat("yyyy年MM月dd日");
return df.format(d);
} /**
*
*
* @return String
*/
public static String getPzDate() { Date d = new Date();
SimpleDateFormat df = new SimpleDateFormat("yyyy年MM月dd日");
return df.format(d);
} /**
* 比较两日期(字符)的大小,日期格式为yyMMdd.
*
* @param beginDate
* @param endDate
* @return boolean
*/
public static final boolean compareDate(String beginDate, String endDate) { long begin = Integer.parseInt(beginDate.substring(0, 4)
+ beginDate.substring(5, 7) + beginDate.substring(8, 10));
long end = Integer.parseInt(endDate.substring(0, 4)
+ endDate.substring(5, 7) + endDate.substring(8, 10));
if (begin > end) {
return false;
} else {
return true;
}
} /**
* 将Date对象类型转化为指定的格式字符串
*
* @param date
* <Date>日期
* @param format
* <String>格式
* @return String
*/
public static String dateToString(Date date, String format) { try {
if (date != null)
return new SimpleDateFormat(format).format(date);
} catch (Exception e) {
e.printStackTrace();
}
return null;
} /**
* 系统日期减去传入日期得到天数
*
* @param date1
* 传入日期
* @return 天数 long
*/
public static long sub(Date date1) {
Date d2 = convertToDate(dateParseShortString(new Date()));
Date d1 = convertToDate(dateParseShortString(date1));
long day = (d2.getTime() - d1.getTime()) / (24 * 60 * 60 * 1000);
return day;
} /**
* 系统日期减去传入日期得到秒数
*
* @param date1
* 传入日期
* @return 天数 long
*/
public static long subSeconds(Date date1) {
return Math.abs((date1.getTime() - new Date().getTime()) / 1000);
} /**
* 两个日期相减得到天数
*
* @param date1
* 传入日期
* @param date2
* 传入日期
* @return 天数 long
*/
public static long sub(Date date1, Date date2) {
Date d1 = convertToDate(dateParseShortString(date1));
Date d2 = convertToDate(dateParseShortString(date2));
long day = (d2.getTime() - d1.getTime()) / (24 * 60 * 60 * 1000);
return day;
} /**
* 日期相减得到年数
*
* @param date1
* 相减的日期
* @return
*/
public static long subDateGetYear(Date date1) {
Date d2 = convertToDate(dateParseShortString(new Date()));
Date d1 = convertToDate(dateParseShortString(date1));
long day = (d2.getYear() - d1.getYear());
return day + 1;
} /**
* 计算两个日期间的月份
*
* @param date1
* 起始日期
* @param date2结束日期
* @return
*/
public static long subDateGetMonth(Date date1, Date date2) {
DateCalculate culate = DateCalculate.calculate(date1, date2);
return culate.getDifferenceOfMonths();
} /**
* 计算两个日期间的月份,不满一个月按一个月计算
*
* @param date1
* 起始日期
* @param date2结束日期
* @return
*/
public static long subDateGetFullMonth(Date date1, Date date2) {
DateCalculate culate = DateCalculate.calculate(date1, date2);
long month = culate.getDifferenceOfMonths();
if (culate.getDifferenceOfDays() > 0)
month++;
return month;
} /**
* 返回当前时间("yyyy-MM-dd HH:mm:ss")
*
* @return 返回当前时间
*/
public static String getCurrentDateTimeStr() {
// 设置日期格式
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return df.format(new Date());
}
java中各种时间公式的更多相关文章
- JAVA中的时间操作
java中的时间操作不外乎这四种情况: 1.获取当前时间 2.获取某个时间的某种格式 3.设置时间 4.时间的运算 好,下面就针对这四种情况,一个一个搞定. 一.获取当前时间 有两种方式可以获得,第一 ...
- Java中日期时间API小结
Java中为处理日期和时间提供了大量的API,确实有把一件简单的事情搞复杂的嫌疑,各种类:Date Time Timestamp Calendar...,但是如果能够看到时间处理的本质就可以轻松hol ...
- 1 Java中的时间类型
总结:sql中的时间转 util的时间直接赋值即可:反过来,必须先吧util下的时间转换成毫秒,再通过sql的构造器生成sql的时间格式. 1 Java中的时间类型 java.sql包下给出三个与数据 ...
- Java中的时间日期处理
程序就是输入——>处理——>输出.对数据的处理是程序员需要着重注意的地方,快速.高效的对数据进行处理时我们的追求.其中,时间日期的处理又尤为重要和平凡,此次,我将把Java中的时间日期处理 ...
- Java中的时间处理
日期时间组件使用 java.util.Date:实现类,其对象具有时间.日期组件.java.util.Calendar:抽象类,其对象具有时间.日期组件.java.sql.Date:实现类,其对象具有 ...
- java中各种时间格式的转化
http://www.chinaitpower.com/A/2005-01-14/104881.html 使用java.util.Calendar返回间隔天数 static int g ...
- Java中六大时间类的使用和区别
关于java中六个时间类的使用和区别 java.util.Date java.sql.Date java.sql.Time java.sql.Timestamp java.text.SimpleD ...
- 【转】Java中本地时间的获取方法--不错
原文网址:http://highforest.blog.51cto.com/125539/842496/ 熟悉Oracle数据库的人,应该知道:select to_char(sysdate,'yyyy ...
- JAVA中Sql时间格式与util时间格式转换
关于时间格式转化: java.util.Date 与 java.sql.Date 互换 sql是子类 字符串转化成java.util.Date SimpleDateFormat date =n ...
随机推荐
- BUAAMOOC项目M2 postmortem
设想和目标 1.我们的软件要解决什么问题?是否定义的很清楚?是否对典型用户和典型场景有清晰的描述? 我们的软件是基于北航MOOC网站做的Android手机客户端,用于便捷的在学校里通过手机做到随时随地 ...
- C程序设计教学小结(选择结构)
1. 函数使用的三个问题 函数声明语句 void add(); 或 int add(int x,int y); 函数调用 add(); c=add(a,b) 函 ...
- Beta 总结
前言 作业发布 组长 成员 贡献分 ★ 530 雨勤 14 311 旭 15 403 俊 16 223 元 14 437 海辉 17 7天 Beta 冲刺站立会议博客链接汇总 Beta 冲刺 (1/7 ...
- 6-Python3从入门到实战—基础之数据类型(元组-Tuple)
Python从入门到实战系列--目录 元组的定义 定义元组只需要在括号中添加元素,并使用逗号隔开即可 tup = ('Python','Java','C++','Kotlin') 元组与列表的区别 P ...
- Eclipse Creating a New Runnable JAR File 清理工作空间下的配置文件
D:\workspacegit\.metadata\.plugins\org.eclipse.debug.core\.launches 相关文件存在这里.
- [转帖]数据中心网络里的Underlay和Overlay
数据中心网络里的Underlay和Overlay https://blog.csdn.net/zjc801blog/article/details/54289683 2017年01月09日 15:47 ...
- Angular factory自定义服务
<!DOCTYPE html><html ng-app="myApp"><head lang="en"> <meta ...
- PSP(5.11——5.17)以及周记录
1.PSP 5.11 14:30 20:00 130 200 Cordova A Y min 5.12 9:00 14:00 100 200 Cordova A Y min 5.13 13:30 15 ...
- 记一次配置oh my zsh的坑
oh-my-zsh:https://github.com/robbyrussell/oh-my-zsh prezto:https://github.com/sorin-ionescu/prezto 我 ...
- delphi try except语句 和 try finally语句用法以及区别
try//尝试执行{SomeCode} except//出错的时候执行, Except有特定的错误类型 {SomeCode} end; try//尝试执行{SomeCode} finally//无论如 ...