使用joda time.jar-time工具类 计算时间相差多少 天,小时,分钟,秒

Joda-Time 工具类使用&&
Joda-time 简单出来时间库。
导入maven 工程jar包
&dependency&
&groupId&joda-time&/groupId&
&artifactId&joda-time&/artifactId&
&version&2.9.2&/version&
&/dependency&
package com.downjoy.
import java.util.C
import java.util.D
import java.util.L
import org.eclipse.piler.ast.SuperR
import org.joda.time.DateT
import org.joda.time.DateTimeC
import org.joda.time.DateTimeZ
import org.joda.time.D
import org.joda.time.I
import org.joda.time.LocalD
import org.joda.time.LocalT
import org.joda.time.P
import org.joda.time.PeriodT
public class JodaTimeTest {
//方法一:取系统点间
DateTime dt1 = new DateTime();
//方法二:通过java.util.Date对象生成
DateTime dt2 = new
DateTime(new Date());
//方法三:指定年月日点分秒生成(参数依次是:年,月,日,时,分,秒,毫秒)
static DateTime dt3 = new DateTime(, 14, 47, 0, 0);
//方法四:ISO8601形式生成
DateTime dt4 = new DateTime(&&);
DateTime dt5 = new DateTime(&T13:14:00&);
//只需要年月日的时候
LocalDate ld1 = new LocalDate();
//只需要时分秒毫秒的时候
LocalTime localTime = new LocalTime(13, 30, 26, 0);// 1:30:26PM
DateTime dt = new DateTime();
int year = dt.getYear();//年
int month = dt.getMonthOfYear();//月
int day = dt.getDayOfMonth(); //天
int day1 = dt.getDayOfWeek();//天
int day2 = dt.getDayOfYear();//天
int week = dt.getDayOfWeek(); //星期
int hour = dt.getHourOfDay();
int min = dt.getMinuteOfHour();
int sec = dt.getSecondOfMinute();
int msec = dt.getMillisOfSecond(); //毫秒
public String toString() {
System.out.println(year+&,&+month+&,&+day+&,&+day1+&,&+day2+&,&+week+&,&+hour+&,&+min+&,&+sec+&,&+msec);
return &&;
public void week(){
DateTime dts = new DateTime();
switch (dts.getDayOfWeek()) {
case DateTimeConstants.SUNDAY:
System.out.println(&星期日&);
case DateTimeConstants.MONDAY:
System.out.println(&星期一&);
case DateTimeConstants.TUESDAY:
System.out.println(&星期二&);
case DateTimeConstants.WEDNESDAY:
System.out.println(&星期三&);
case DateTimeConstants.THURSDAY:
System.out.println(&星期四&);
case DateTimeConstants.FRIDAY:
System.out.println(&星期五&);
case DateTimeConstants.SATURDAY:
System.out.println(&星期6&);
public static void main(String[] args) {
JodaTimeTest jodaTime =new
JodaTimeTest();
jodaTime.toString();
System.out.println(dt3);
//转换成java.util.Date对象
DateTime datetime = new DateTime();
Date d1 = new Date(datetime.getMillis());
Date d2 = datetime.toDate();
//转换成java.util.Calendar对象
Calendar c1 = Calendar.getInstance();
c1.setTimeInMillis(datetime.getMillis());
Calendar c2 = datetime.toCalendar(Locale.getDefault());
jodaTime.week();
System.out.println(d1);
System.out.println(d2);
System.out.println(c1.getTimeInMillis());
System.out.println(datetime);
String s1 = datetime.toString(&yyyy/MM/dd hh:mm:ss.SSSa&);
// 04:12:22.012下午
String s2 = datetime.toString(&yyyy-MM-dd HH:mm:ss&);
// 16:12:22
String s3 = datetime.toString(&EEEE dd MMMM, yyyy HH:mm:ssa&);
//星期三 15 六月, :22下午
String s4 = datetime.toString(&yyyy/MM/dd HH:mm ZZZZ&);
// 16:12 +08:00
String s5 = datetime.toString(&yyyy/MM/dd HH:mm Z&);
// 16:12 +0800
System.out.println(s1+&/n&+s2+&/n&+s3+&/n&+s4+&/n&+s5);
DateTime dt01 = new DateTime();
DateTime yesterday = dt01.minusDays(1);
DateTime tomorrow = dt01.plusDays(1);
DateTime before1month = dt01.minusMonths(1);
DateTime after3month = dt01.plusMonths(3);
DateTime before2year = dt01.minusYears(2);
DateTime after5year = dt01.plusYears(5);
DateTime d1 = new DateTime(&&);
DateTime d2 = new DateTime(&&);
//和系统时间比
boolean b1 = d1.isAfterNow();
boolean b2 = d1.isBeforeNow();
boolean b3 = d1.isEqualNow();
//和其他日期比
boolean f1 = d1.isAfter(d2);
boolean f2 = d1.isBefore(d2);
boolean f3 = d1.isEqual(d2);
DateTime begin = new DateTime(&&);
DateTime end = new DateTime(&&);
//计算区间毫秒数
Duration d = new Duration(begin, end);
long time = d.getMillis();
//计算区间天数
Period p = new Period(begin, end, PeriodType.days());
int days = p.getDays();
//计算特定日期是否在该区间内
Interval i = new Interval(begin, end);
boolean contained = i.contains(new DateTime(&&));
//默认设置为日本时间
DateTime dt001 = new DateTime();
//伦敦时间
DateTime dt002 = new DateTime(DateTimeZone.forID(&Europe/London&));
//月末日期
DateTime lastday = dt.dayOfMonth().withMaximumValue();
//90天后那周的周一
DateTime firstday = dt.plusDays(90).dayOfWeek().withMinimumValue();
被转藏 : 1次实用代码块(231)
Java时间工具类(把日期时间转换成xx秒前、xx分钟前、xx小时前...)
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:2515次
排名:千里之外
转载:231篇Java获取时间 时间计算 转换时间工具类 - 博客频道 - CSDN.NET
季小沫的博客
分类:Java时间计算
Java获取时间 时间计算 转换时间工具类 JAVA日期工具类
package com.mh.
import java.sql.T
import java.text.ParseE
import java.text.SimpleDateF
import java.util.C
import java.util.D
* 时间日期转换工具类 &br&
public class DateTimeUtil {
* 获取两个日期对象相差天数
* int 日差值
public static int compareDay(java.util.Date date1, java.util.Date date2) {
if (date1 == null || date2 == null)
long time1 = date1.getTime();
long time2 = date2.getTime();
long margin = time1 - time2;
int ret = (int) Math.floor((double) margin / (1000 * 60 * 60 * 24));
* 获取两个日期对象相差天数
String yyyy-MM-dd
String yyyy-MM-dd
* int 日差值
public static int compareDay(String date1str, String date2str) {
if (date1str == null || date2str == null)
java.util.Date date1 = toDate(date1str, "00:00:01");
java.util.Date date2 = toDate(date2str, "00:00:00");
return compareDay(date1, date2);
public static int compareHour(java.util.Date date1, java.util.Date date2) {
if (date1 == null || date2 == null)
long time1 = date1.getTime();
long time2 = date2.getTime();
long margin = time1 - time2;
int ret = (int) Math.floor((double) margin / (1000 * 60 * 60 * 24));
* 获取两个日期对象相差的分钟数
* int 相差分钟数
public static int compareMinute(java.util.Date date1, java.util.Date date2) {
if (date1 == null || date2 == null)
long time1 = date1.getTime();
long time2 = date2.getTime();
long margin = time1 - time2;
int ret = (int) Math.floor((double) margin / (1000 * 60 * 60 * 24));
* 获取两个日期对象相差月数
* int 月份差值
public static int compareMonth(java.util.Date date1, java.util.Date date2) {
if (date1 == null || date2 == null)
int year = compareYear(date1, date2);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date1);
int month1 = calendar.get(Calendar.MONTH);
calendar.setTime(date2);
int month2 = calendar.get(Calendar.MONTH);
return 12 * year + (month1 - month2);
* 获取两个日期对象相差秒数
* int 相差秒数
public static int compareSecond(java.util.Date date1, java.util.Date date2) {
if (date1 == null || date2 == null)
long time1 = date1.getTime();
long time2 = date2.getTime();
long margin = time1 - time2;
Long longValue = new Long(margin / (1000));
return longValue.intValue();
* 获取两个日期对象相差年数
* date1 日期对象
* int 年份差值
public static int compareYear(java.util.Date date1, java.util.Date date2) {
if (date1 == null || date2 == null)
Calendar calendar = Calendar.getInstance();
calendar.setTime(date1);
int year1 = calendar.get(Calendar.YEAR);
calendar.setTime(date2);
int year2 = calendar.get(Calendar.YEAR);
return year1 - year2;
public static String converTime(String str, String format) {
SimpleDateFormat df = new SimpleDateFormat("yyyyMMddhhmmss");
String dateString =
Date date = df.parse(dateString);
dateString = toDateTimeString(date, format);
catch (Exception ex) {
ex.printStackTrace();
return dateS
public static String converDate(String str, String format) {
SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");
String dateString =
Date date = df.parse(dateString);
dateString = toDateTimeString(date, format);
catch (Exception ex) {
ex.printStackTrace();
return dateS
* 得到指定年月的最后一天.
* monthStr
年月字符串,格式:yyyy-MM
public static String endDayOfMoth(String monthStr) {
int day[] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
int year = Integer.parseInt(monthStr.substring(0, 4));
int month = Integer.parseInt(monthStr.substring(5));
int endDay = day[month];
if (month == 2) {
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
endDay = 29;
return endDay + "";
* 获取当前日期
* 当前日期
public static int getCurrentDay() {
Calendar calendar = Calendar.getInstance();
int day = calendar.get(Calendar.DAY_OF_MONTH);
* 获取当前时
* 当前时间,如:23点,0点,1点等
public static int getCurrentHour() {
Calendar calendar = Calendar.getInstance();
int hour = calendar.get(Calendar.HOUR_OF_DAY);
* 获取当前分
public static int getCurrentMinute() {
Calendar calendar = Calendar.getInstance();
int hour = calendar.get(Calendar.MINUTE);
* 获取当前月份
public static int getCurrentMonth() {
Calendar calendar = Calendar.getInstance();
return calendar.get(Calendar.MONTH) + 1;
* 获取当前时间的星期数:星期日=7;星期一=1;星期二=2;星期三=3;星期四=4;星期五=5;星期六=6;
public static int getCurrentWeek() {
Calendar calendar = Calendar.getInstance();
int week = calendar.get(Calendar.DAY_OF_WEEK);
week = week - 1;
if (week == 0)
* 获取当前年
public static int getCurrentYear() {
Calendar calendar = Calendar.getInstance();
return calendar.get(Calendar.YEAR);
* 取得当前的日期时间字符串YYYY-MM-DD
* String 取得当前的日期时间字符串
public static String getDateString() {
String format = "yyyy-MM-dd";
return getDateTimeString(format);
* 取得当前的日期时间字符串YYYY/MM/DD (移动)
* String 取得当前的日期时间字符串YYYY/MM/DD
public static String getDateString2() {
String format = "yyyy/MM/dd";
return getDateTimeString(format);
* 取得当前的日期时间字符串YYMMDDHHMISS
* String 取得当前的日期时间字符串YYMMDDHHMISS
public static String getDateTime12String() {
String format = "yyMMddHHmmss";
return getDateTimeString(format);
* 取得当前的日期时间字符串YYYYMMDDHHMISS
* String 取得当前的日期时间字符串YYYYMMDDHHMISS
public static String getDateTime14String() {
String format = "yyyyMMddHHmmss";
return getDateTimeString(format);
* 取得当前的日期时间字符串YYYYMM
* String 取得当前的日期时间字符串
public static String getDateTime6String() {
String format = "yyyyMM";
return getDateTimeString(format);
* 取得当前的日期时间字符串YYYYMMDD
* String 取得当前的日期时间字符串
public static String getDateTime8String() {
String format = "yyyyMMdd";
return getDateTimeString(format);
* 取得当前的日期整型数组共7项,分别为年,月,日,时,分,秒,毫秒
* int[] 共7项,分别为年,月,日,时,分,秒,毫秒
public static int[] getDateTimes() {
int[] dates = new int[7];
Calendar calendar = Calendar.getInstance();
dates[0] = calendar.get(Calendar.YEAR);
dates[1] = calendar.get(Calendar.MONTH) + 1;
dates[2] = calendar.get(Calendar.DAY_OF_MONTH);
dates[3] = calendar.get(Calendar.HOUR_OF_DAY);
dates[4] = calendar.get(Calendar.MINUTE);
dates[5] = calendar.get(Calendar.SECOND);
dates[6] = calendar.get(Calendar.MILLISECOND);
* 取得当前的日期时间字符串YYYY-MM-DD HH:mm:ss
* String 取得当前的日期时间字符串YYYY-MM-DD HH:mm:ss
public static String getDateTimeString() {
String format = "yyyy-MM-dd HH:mm:ss";
return getDateTimeString(format);
* 取得当前的日期时间字符串
格式,如String format = "yyyy-MM-dd HH:mm:ss";
* String 取得当前的日期时间字符串
public static String getDateTimeString(String format) {
return toDateTimeString(new java.util.Date(), format);
* 取得当前的日期时间字符串YYYY/MM/DD HH:mm:ss (移动)
* String 取得当前的日期时间字符串YYYY/MM/DD HH:mm:ss
public static String getDateTimeString2() {
String format = "yyyy/MM/dd HH:mm:ss";
return getDateTimeString(format);
/** 返回从当日结束的Timestamp */
public static Timestamp getDayEnd(Timestamp stamp) {
return getDayEnd(stamp, 0);
/** 返回从多少日后结束的Timestamp */
public static Timestamp getDayEnd(Timestamp stamp, int daysLater) {
Calendar tempCal = Calendar.getInstance();
tempCal.setTime(new java.util.Date(stamp.getTime()));
tempCal.set(tempCal.get(Calendar.YEAR), tempCal.get(Calendar.MONTH), tempCal.get(Calendar.DAY_OF_MONTH), 23, 59, 59);
tempCal.add(Calendar.DAY_OF_MONTH, daysLater);
return new Timestamp(tempCal.getTime().getTime());
* 获取指定时间所在周的第一天的时间
* 年、月、日数组
public static int[] getDayOfWeek(int year, int month, int day) {
int[] rtn = new int[6];
int week = 0;
long longDate = 0;
java.util.Date date = null;
Calendar calendar1 = Calendar.getInstance();
Calendar calendar2 = Calendar.getInstance();
Calendar calendar = Calendar.getInstance();
calendar.set(year, month - 1, day);
calendar.setFirstDayOfWeek(Calendar.SUNDAY);
week = calendar.get(Calendar.DAY_OF_WEEK);
longDate = (calendar.getTime()).getTime() - (60 * 1000 * 60 * 24 * (week - 1));
date = new java.util.Date(longDate);
calendar1.setTime(date);
rtn[0] = calendar1.get(Calendar.YEAR);
rtn[1] = calendar1.get(Calendar.MONTH) + 1;
rtn[2] = calendar1.get(Calendar.DATE);
longDate = (calendar.getTime()).getTime() + (60 * 1000 * 60 * 24 * (7 - week));
date = new java.util.Date(longDate);
calendar2.setTime(date);
rtn[3] = calendar2.get(Calendar.YEAR);
rtn[4] = calendar2.get(Calendar.MONTH) + 1;
rtn[5] = calendar2.get(Calendar.DATE);
* 根据传入的日期得到是每周的周几
* sendDate
日期格式:yyyy-MM-dd
public static String getDayOfWeek(String sendDate) {
String dayName[] = { "0", "7", "1", "2", "3", "4", "5", "6" };
Calendar c = toCalendar(sendDate + " 00:00:00");
int dayOfWeek = c.get(Calendar.DAY_OF_WEEK);
return dayName[dayOfWeek];
/** 返回从当日开始的Timestamp */
public static Timestamp getDayStart(Timestamp stamp) {
return getDayStart(stamp, 0);
/** 返回多少天后开始的Timestamp */
public static Timestamp getDayStart(Timestamp stamp, int daysLater) {
Calendar tempCal = Calendar.getInstance();
tempCal.setTime(new java.util.Date(stamp.getTime()));
tempCal.set(tempCal.get(Calendar.YEAR), tempCal.get(Calendar.MONTH), tempCal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
tempCal.add(Calendar.DAY_OF_MONTH, daysLater);
return new Timestamp(tempCal.getTime().getTime());
* 获取后一天的Date String
* YYYY+spe+MM+spe+DD
public static String getNextDateStr(String spe) {
Calendar calendar = Calendar.getInstance();
long longDate = (calendar.getTime()).getTime() + (1000 * 60 * 60 * 24 * 1);
java.util.Date date = new java.util.Date(longDate);
calendar.setTime(date);
return toDateString(calendar.getTime(), spe);
* 获取后几天对应的当前时间
格式化如 yyyy-MM-dd
public static String getNextDateString(int days) {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_MONTH, days);
return toDateString(calendar);
* 获取指定时间的后一天的Date String
* YYYY+spe+MM+spe+DD
public static String getNextDateString(String currentDate) {
Calendar calendar = toCalendar(currentDate + " 00:00:01");
calendar.add(Calendar.DAY_OF_MONTH, 1);
return toDateString(calendar);
* 获取后几小时对应的当前时间
格式化如 yyyy-MM-dd
public static String getNextDateStringByHour(int hours) {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.HOUR_OF_DAY, hours);
return toDateString(calendar);
* 获取后几秒对应的当前时间
格式化如 yyyy-MM-dd
public static String getNextDateStringBySecond(int seconds) {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.SECOND, seconds);
return toDateString(calendar);
* 获取后一天的Date String
* YYYY+spe+MM+spe+DD
public static String getNextDateTimeStr(String format) {
Calendar calendar = Calendar.getInstance();
long longDate = (calendar.getTime()).getTime() + (1000 * 60 * 60 * 24 * 1);
java.util.Date date = new java.util.Date(longDate);
calendar.setTime(date);
return toDateTimeString(calendar.getTime(), format);
* 获取后几天对应的当前时间
格式化如 yyyy-MM-dd
public static String getNextDateTimeString(int days) {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_MONTH, days);
return toDateTimeString(calendar);
* 获取后几小时对应的当前时间
格式化如 yyyy-MM-dd
public static String getNextDateTimeStringByHour(int hours) {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.HOUR_OF_DAY, hours);
return toDateTimeString(calendar);
* 获取后几秒对应的当前时间
格式化如 yyyy-MM-dd
public static String getNextDateTimeStringBySecond(int seconds) {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.SECOND, seconds);
return toDateTimeString(calendar);
* 获取后一天String
* 年、月、日数组
public static int[] getNextDay() {
Calendar calendar = Calendar.getInstance();
long longDate = (calendar.getTime()).getTime() + (1000 * 60 * 60 * 24 * 1);
java.util.Date date = new java.util.Date(longDate);
calendar.setTime(date);
int[] rtn = new int[3];
rtn[0] = calendar.get(Calendar.YEAR);
rtn[1] = calendar.get(Calendar.MONTH) + 1;
rtn[2] = calendar.get(Calendar.DATE);
* 获取当前时间的后一天或数天的年、月、日,并以数组形式还回。 数组0为年;1为月;2为日
* 年、月、日数组
public static int[] getNextDay(int year, int month, int day, int days) {
Calendar calendar = Calendar.getInstance();
calendar.set(year, month - 1, day);
long longDate = (calendar.getTime()).getTime() + (1000 * 60 * 60 * 24 * days);
java.util.Date date = new java.util.Date(longDate);
calendar.setTime(date);
int[] rtn = new int[3];
rtn[0] = calendar.get(Calendar.YEAR);
rtn[1] = calendar.get(Calendar.MONTH) + 1;
rtn[2] = calendar.get(Calendar.DATE);
/** 返回下一天开始的Timestamp */
public static Timestamp getNextDayStart(Timestamp stamp) {
return getDayStart(stamp, 1);
* 获取前几小时对应的当前时间
格式化如 yyyy-MM-dd
public static String getPreviousDateByHourString(int hours) {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.HOUR_OF_DAY, -hours);
return toDateString(calendar);
* 获取前几秒对应的当前时间
格式化如 yyyy-MM-dd
public static String getPreviousDateBySecondString(int second) {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.SECOND, -second);
return toDateString(calendar);
* 获取前一天对应的当前时间,采用标准格式yyyy-MM-dd
public static String getPreviousDateString() {
return getPreviousDateTimeString("yyyy-MM-dd");
* 获取前几天对应的当前时间
格式化如 yyyy-MM-dd
public static String getPreviousDateString(int days) {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_MONTH, -days);
return toDateString(calendar);
* 获取前一天对应的当前时间,采用标准格式yyyyMMdd
public static String getPreviousDateString1() {
return getPreviousDateTimeString("yyyyMMdd");
* 获取前一天对应的当前时间,采用短信格式yyyy/MM/dd
public static String getPreviousDateString2() {
return getPreviousDateTimeString("yyyy/MM/dd");
* 获取前几小时对应的当前时间
格式化如 yyyy-MM-dd
public static String getPreviousDateTimeByHourString(int hours) {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.HOUR_OF_DAY, -hours);
return toDateTimeString(calendar);
* 获取前几秒对应的当前时间
格式化如 yyyy-MM-dd
public static String getPreviousDateTimeBySecondString(int second) {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.SECOND, -second);
return toDateTimeString(calendar);
* 获取前一天对应的当前时间,采用标准格式yyyy-MM-dd HH:mm:ss
public static String getPreviousDateTimeString() {
return getPreviousDateTimeString("yyyy-MM-dd HH:mm:ss");
* 获取前几天对应的当前时间
格式化如 yyyy-MM-dd
public static String getPreviousDateTimeString(int days) {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_MONTH, -days);
return toDateTimeString(calendar);
* 获取前一天对应的当前时间
格式化如 yyyy-MM-dd HH:mm:ss
public static String getPreviousDateTimeString(String format) {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_MONTH, -1);
return toDateTimeString(calendar, format);
* 获取前一天对应的当前时间,采用短信格式yyyy/MM/dd HH:mm:ss
public static String getPreviousDateTimeString2() {
return getPreviousDateTimeString("yyyy/MM/dd HH:mm:ss");
* 获取当前时间的前一天或数天的年、月、日,并以数组形式还回。 数组0为年;1为月;2为日
* 年、月、日数组
public static int[] getPreviousDay(int year, int month, int day, int days) {
Calendar calendar = Calendar.getInstance();
calendar.set(year, month - 1, day);
long longDate = (calendar.getTime()).getTime() - (1000 * 60 * 60 * 24 * days);
java.util.Date date = new java.util.Date(longDate);
calendar.setTime(date);
int[] rtn = new int[3];
rtn[0] = calendar.get(Calendar.YEAR);
rtn[1] = calendar.get(Calendar.MONTH) + 1;
rtn[2] = calendar.get(Calendar.DATE);
* 得到当前时间的上一个月.格式:yyyy-MM
public static String getProviesMoth() {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.MONTH, -1);
return DateTimeUtil.toDateTimeString(calendar, "yyyy-MM");
* 获取和当前时间毫秒差值
* dateTime
YYYY-MM-DD hh:mm:ss
public static long getTimeMargin(String dateTime) {
int index = dateTime.indexOf(" ");
String date = dateTime.substring(0, index);
String time = dateTime.substring(index + 1);
int dateSlash1 = date.indexOf("-");
int dateSlash2 = date.lastIndexOf("-");
if (dateSlash1 &= 0 || dateSlash1 == dateSlash2)
return -1;
int timeColon1 = time.indexOf(":");
int timeColon2 = time.lastIndexOf(":");
if (timeColon1 &= 0 || timeColon1 == timeColon2)
return -1;
Calendar calendar = Calendar.getInstance();
int year = Integer.parseInt(date.substring(0, dateSlash1));
int month = Integer.parseInt(date.substring(dateSlash1 + 1, dateSlash2));
int day = Integer.parseInt(date.substring(dateSlash2 + 1));
int hour = Integer.parseInt(time.substring(0, timeColon1));
int minute = Integer.parseInt(time.substring(timeColon1 + 1, timeColon2));
int second = Integer.parseInt(time.substring(timeColon2 + 1));
calendar.set(year, month - 1, day, hour, minute, second);
catch (Exception e) {
return -1;
return System.currentTimeMillis() - calendar.getTimeInMillis();
public static String getTimeMillStr() {
Calendar calendar = Calendar.getInstance();
long time = calendar.getTimeInMillis();
String result = String.valueOf(time);
* 取得当前的日期时间字符串HH:mm:ss
* String 取得当前的日期时间字符串
public static String getTimeString() {
String format = "HH:mm:ss";
return getDateTimeString(format);
* 日期字符串校验,是否与指定的 format格式一致.
格式字符串,比如 yyyy-MM-dd
public static boolean isDate(String dateStr, String format) {
SimpleDateFormat sdf = new SimpleDateFormat(format);
sdf.setLenient(false);
sdf.parse(dateStr);
catch (ParseException e) {
return false;
return true;
/** 返回当前时间的Date */
public static java.util.Date nowDate() {
return new java.util.Date();
/** 返回当前时间的Timestamp */
public static Timestamp nowTimestamp() {
return new Timestamp(System.currentTimeMillis());
* 通过标准时间输入,年,月,日,时,分,秒,生成java.util.Date
* Calendar
public static Calendar toCalendar(int year, int month, int day, int hour, int minute, int second) {
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, month - 1);
c.set(Calendar.DATE, day);
c.set(Calendar.HOUR_OF_DAY, hour);
c.set(Calendar.MINUTE, minute);
c.set(Calendar.SECOND, second);
* 通过整型数组,组织一个日历
* 通过整型数组,返回一个日历
public static Calendar toCalendar(int[] dates) {
if (dates == null || dates.length & 6)
return null;
return toCalendar(dates[0], dates[1], dates[2], dates[3], dates[4], dates[5]);
* 通过String,组织一个日历
* 通过整型数组,返回一个日历
public static Calendar toCalendar(String datetime) {
java.util.Date date = toDateFromStr(datetime);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
* 通过标准时间输入,年,月,日,时,分,秒,生成java.util.Date
* monthStr
* minuteStr
* secondStr
* Calendar
public static Calendar toCalendar(String yearStr, String monthStr, String dayStr, String hourStr, String minuteStr, String secondStr) {
int year, month, day, hour, minute,
year = Integer.parseInt(yearStr);
month = Integer.parseInt(monthStr);
day = Integer.parseInt(dayStr);
hour = Integer.parseInt(hourStr);
minute = Integer.parseInt(minuteStr);
second = Integer.parseInt(secondStr);
catch (Exception e) {
return null;
return toCalendar(year, month, day, hour, minute, second);
* 通过标准时间输入,年,月,日,时,分,秒,生成java.util.Date
* java.util.Date
public static java.util.Date toDate(int year, int month, int day, int hour, int minute, int second) {
Calendar calendar = Calendar.getInstance();
calendar.set(year, month - 1, day, hour, minute, second);
catch (Exception e) {
return null;
return calendar.getTime();
* 通过整型数组,组织一个日期
* 通过整型数组,组织一个日期
public static java.util.Date toDate(int[] dates) {
if (dates == null || dates.length & 6)
return null;
return toCalendar(dates).getTime();
* 字符串转为时间,字符串符合标准格式:"YYYY-MM-DD HH:MM:SS"
* dateTime
标准时间格式 "YYYY-MM-DD HH:MM:SS"
* java.util.Date
public static java.util.Date toDate(String dateTime) {
int index = dateTime.indexOf(" ");
String date = dateTime.substring(0, index);
String time = dateTime.substring(index + 1);
return toDate(date, time);
* 字符串转为时间,字符串符合标准日期格式:"YYYY-MM-DD",和标准时间格式:"HH:MM:SS"
标准日期格式 "YYYY-MM-DD"
标准时间格式 "HH:MM:SS"
* java.util.Date
public static java.util.Date toDate(String date, String time) {
if (date == null || time == null)
return null;
int dateSlash1 = date.indexOf("-");
int dateSlash2 = date.lastIndexOf("-");
if (dateSlash1 &= 0 || dateSlash1 == dateSlash2)
return null;
int timeColon1 = time.indexOf(":");
int timeColon2 = time.lastIndexOf(":");
if (timeColon1 &= 0 || timeColon1 == timeColon2)
return null;
String year = date.substring(0, dateSlash1);
String month = date.substring(dateSlash1 + 1, dateSlash2);
String day = date.substring(dateSlash2 + 1);
String hour = time.substring(0, timeColon1);
String minute = time.substring(timeColon1 + 1, timeColon2);
String second = time.substring(timeColon2 + 1);
return toDate(year, month, day, hour, minute, second);
* 通过标准时间输入,年,月,日,时,分,秒,生成java.util.Date
* monthStr
* minuteStr
* secondStr
* java.util.Date
public static java.util.Date toDate(String yearStr, String monthStr, String dayStr, String hourStr, String minuteStr, String secondStr) {
int year, month, day, hour, minute,
year = Integer.parseInt(yearStr);
month = Integer.parseInt(monthStr);
day = Integer.parseInt(dayStr);
hour = Integer.parseInt(hourStr);
minute = Integer.parseInt(minuteStr);
second = Integer.parseInt(secondStr);
catch (Exception e) {
return null;
return toDate(year, month, day, hour, minute, second);
* 取得当前的日期时间 按默认格式YYYY-MM-DD HH:mm:ss不对则返回null
* 取得当前的日期时间 按默认格式不对则返回null
public static java.util.Date toDateFromStr(String str) {
String format = "yyyy-MM-dd HH:mm:ss";
SimpleDateFormat sdf = new SimpleDateFormat(format);
return sdf.parse(str);
catch (ParseException e) {
return null;
* 取得当前的日期时间
* 取得当前的日期时间 如果格式不对则返回null
public static java.util.Date toDateFromStr(String str, String format) {
SimpleDateFormat sdf = new SimpleDateFormat(format);
return sdf.parse(str);
catch (ParseException e) {
return null;
* 取得给定日历,给定格式的日期字符串
* calendar
日历,给定一个日历
* String 取得默认的日期时间字符串"yyyy-MM-dd"
public static String toDateString(Calendar calendar) {
String format = "yyyy-MM-dd";
return toDateTimeString(calendar.getTime(), format);
/** ****************************************************** */
/** ****************************************************** */
* 生成标准日期,格式为 YYYY-MM-DD
* 生成日期,格式为 YYYY-MM-DD
public static String toDateString(java.util.Date date) {
return toDateString(date, "-");
* 生成标准日期,格式为 YYYY+spe+MM+spe+DD
* 生成日期,格式为 YYYY+spe+MM+spe+DD
public static String toDateString(java.util.Date date, String spe) {
if (date == null)
return "";
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int month = calendar.get(Calendar.MONTH) + 1;
int day = calendar.get(Calendar.DAY_OF_MONTH);
int year = calendar.get(Calendar.YEAR);
String monthStr = "" +
String dayStr = "" +
String yearStr = "" +
if (month & 10)
monthStr = "0" +
if (day & 10)
dayStr = "0" +
return yearStr + spe + monthStr + spe + dayS
* 取得给定日历,给定格式的日期时间字符串
* calendar
日历,给定一个日历
* String 取得默认的日期时间字符串"yyyy-MM-dd HH:mm:ss"
public static String toDateTimeString(Calendar calendar) {
String format = "yyyy-MM-dd HH:mm:ss";
return toDateTimeString(calendar.getTime(), format);
* 取得给定日历,给定格式的日期时间字符串
* calendar
日历,给定一个日历
格式,如String format = "yyyy-MM-dd HH:mm:ss";
* String 取得给定日历,给定格式的日期时间字符串
public static String toDateTimeString(Calendar calendar, String format) {
return toDateTimeString(calendar.getTime(), format);
* 生成标准格式的字符串 格式为: "MM-DD-YYYY HH:MM:SS"
* 生成默认格式的字符串 格式为: "MM-DD-YYYY HH:MM:SS"
public static String toDateTimeString(java.util.Date date) {
if (date == null)
return "";
String dateString = toDateString(date);
String timeString = toTimeString(date);
if (dateString == null || timeString == null)
return "";
return dateString + " " + timeS
* 取得给定时间,给定格式的日期时间字符串
日期,给定一个时间
格式,如String format = "yyyy-MM-dd HH:mm:ss";
* String 取得给定时间,给定格式的日期时间字符串
public static String toDateTimeString(java.util.Date date, String format) {
SimpleDateFormat sdf = new SimpleDateFormat(format);
return sdf.format(date);
* 取得给定时间,给定格式的日期时间字符串,标准格式:"yyyy-MM-dd HH:mm:ss";
* datetime
日期,给定一个时间的毫秒数
* String 取得给定时间,给定格式的日期时间字符串
public static String toDateTimeString(long datetime) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sdf.format(new java.util.Date(datetime));
* 取得给定时间,给定格式的日期时间字符串
* datetime
日期,给定一个时间的毫秒数
格式,如String format = "yyyy-MM-dd HH:mm:ss";
* String 取得给定时间,给定格式的日期时间字符串
public static String toDateTimeString(long datetime, String format) {
SimpleDateFormat sdf = new SimpleDateFormat(format);
return sdf.format(new java.util.Date(datetime));
* 生成java.sql.Date,通过传入year, month, day
* A java.sql.Date
public static java.sql.Date toSqlDate(int year, int month, int day) {
java.util.Date newDate = toDate(year, month, day, 0, 0, 0);
if (newDate == null)
return null;
return new java.sql.Date(newDate.getTime());
* String到java.sql.Date的转换 标准格式:YYYY-MM-DD
The date String
* java.sql.Date
public static java.sql.Date toSqlDate(String date) {
java.util.Date newDate = toDate(date, "00:00:00");
if (newDate == null)
return null;
return new java.sql.Date(newDate.getTime());
* 生成java.sql.Date,通过传入year, month, day
* monthStr
* A java.sql.Date
public static java.sql.Date toSqlDate(String yearStr, String monthStr, String dayStr) {
java.util.Date newDate = toDate(yearStr, monthStr, dayStr, "0", "0", "0");
if (newDate == null)
return null;
return new java.sql.Date(newDate.getTime());
* 生成 java.sql.Time 通过输入时,分,秒
* A java.sql.Time
public static java.sql.Time toSqlTime(int hour, int minute, int second) {
java.util.Date newDate = toDate(0, 0, 0, hour, minute, second);
if (newDate == null)
return null;
return new java.sql.Time(newDate.getTime());
* 转换String 到 java.sql.Time,格式:"HH:MM:SS"
The time String
* A java.sql.Time
public static java.sql.Time toSqlTime(String time) {
java.util.Date newDate = toDate("", time);
if (newDate == null)
return null;
return new java.sql.Time(newDate.getTime());
* 生成 java.sql.Time 通过输入时,分,秒
* minuteStr
* secondStr
* A java.sql.Time
public static java.sql.Time toSqlTime(String hourStr, String minuteStr, String secondStr) {
java.util.Date newDate = toDate("0", "0", "0", hourStr, minuteStr, secondStr);
if (newDate == null)
return null;
return new java.sql.Time(newDate.getTime());
* 生成 Timestamp 通过输入年,月,日,时,分,秒
* Timestamp
@SuppressWarnings("null")
public static Timestamp toTimestamp(int year, int month, int day, int hour, int minute, int second) {
java.util.Date newDate = toDate(year, month, day, hour, minute, second);
if (newDate != null)
return null;
return new Timestamp(newDate.getTime());
* 转换String 到 java.sql.Timestamp,格式:"YYYY-MM-DD HH:MM:SS"
* dateTime
格式:"YYYY-MM-DD HH:MM:SS"
* Timestamp
@SuppressWarnings("null")
public static Timestamp toTimestamp(String dateTime) {
java.util.Date newDate = toDate(dateTime);
if (newDate != null)
return null;
return new Timestamp(newDate.getTime());
* 转换String 到 java.sql.Timestamp,格式:"YYYY-MM-DD HH:MM:SS"
The date String: YYYY-MM-DD
The time String: HH:MM:SS
* Timestamp
public static Timestamp toTimestamp(String date, String time) {
java.util.Date newDate = toDate(date, time);
if (newDate == null)
return null;
return new Timestamp(newDate.getTime());
* 生成 Timestamp 通过输入年,月,日,时,分,秒
* monthStr
* minuteStr
* secondStr
* Timestamp
@SuppressWarnings("null")
public static Timestamp toTimestamp(String yearStr, String monthStr, String dayStr, String hourStr, String minuteStr, String secondStr) {
java.util.Date newDate = toDate(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);
if (newDate != null)
return null;
return new Timestamp(newDate.getTime());
* 根据输入的时,分,秒,生成时间格式 HH:MM:SS
* 生成时间格式为 HH:MM:SS
public static String toTimeString(int hour, int minute, int second) {
String hourStr = "" +
String minuteStr = "" +
String secondStr = "" +
if (hour & 10)
hourStr = "0" +
if (minute & 10)
minuteStr = "0" +
if (second & 10)
secondStr = "0" +
return hourStr + ":" + minuteStr + ":" + secondS
* 根据输入的时间,生成时间格式 HH:MM:SS
java.util.Date
* 生成时间格式为 HH:MM:SS
public static String toTimeString(java.util.Date date) {
if (date == null)
return "";
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return toTimeString(calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE), calendar.get(Calendar.SECOND));
* 获取传入时间的前N个小时对应的时间
格式化如 yyyy-MM-dd HH:mm:ss
* String 格式化如 yyyy-MM-dd HH:mm:ss
public static String getPreviousDateTimeString(String format, int hour) {
Calendar calendar = toCalendar(format);
calendar.add(Calendar.HOUR_OF_DAY, -hour);
return toDateTimeString(calendar, format);
* 获取传入时间的前N天时间
格式化如 yyyyMMdd
* String 格式化如 yyyyMMdd
public static String getPreviousDateString(String format, int days) {
format = format.substring(0, 4) + "-" + format.substring(4, 6) + "-" + format.substring(6, 8) + " 00:00:00";
Calendar calendar = toCalendar(format);
calendar.add(Calendar.DAY_OF_MONTH, -days);
return toDateString(calendar).replaceAll("-", "").substring(0, 8);
* 得到几天前的时间
* ParseException
public static String getDateBefore(String d, int day) throws ParseException {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Date dt = formatter.parse(d);
Calendar now = Calendar.getInstance();
now.setTime(dt);
now.set(Calendar.DATE, now.get(Calendar.DATE) - day);
String time = formatter.format(now.getTime());
* 得到几天后的时间
public static String getDateAfter(String d, int day) throws ParseException {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Date dt = formatter.parse(d);
Calendar now = Calendar.getInstance();
now.setTime(dt);
now.set(Calendar.DATE, now.get(Calendar.DATE) + day);
String time = formatter.format(now.getTime());
* 获取当前星期几
* Exception
public static int dayForWeek(String pTime) throws Exception {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
c.setTime(format.parse(pTime));
int dayForWeek = 0;
if(c.get(Calendar.DAY_OF_WEEK) == 1){
dayForWeek = 7;
dayForWeek = c.get(Calendar.DAY_OF_WEEK) - 1;
return dayForW
* 根据当前日期获取周一周日
* ParseException
public static String[] getWeek(String daytime) throws ParseException {
String[] weekday = new String[2];
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
Date time=sdf.parse(daytime);
cal.setTime(time);
System.out.println("要计算日期为:"+sdf.format(cal.getTime()));
int dayWeek = cal.get(Calendar.DAY_OF_WEEK);
if(1 == dayWeek) {
cal.add(Calendar.DAY_OF_MONTH, -1);
cal.setFirstDayOfWeek(Calendar.MONDAY);
int day = cal.get(Calendar.DAY_OF_WEEK);
cal.add(Calendar.DATE, cal.getFirstDayOfWeek()-day);
weekday[0] = sdf.format(cal.getTime());
cal.add(Calendar.DATE, 6);
weekday[1] = sdf.format(cal.getTime());
* 获取当前月初月末
* ParseException
public static String[] getMonth(String daytime) throws ParseException {
String[] weekday = new String[2];
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
Date time=sdf.parse(daytime);
cal.setTime(time);
System.out.println("要计算日期为:"+sdf.format(cal.getTime()));
int dayWeek = cal.get(Calendar.DAY_OF_WEEK);
if(1 == dayWeek) {
cal.add(Calendar.DAY_OF_MONTH, -1);
cal.setFirstDayOfWeek(Calendar.MONDAY);
int day = cal.get(Calendar.DAY_OF_WEEK);
cal.add(Calendar.DATE, cal.getFirstDayOfWeek()-day);
weekday[0] = sdf.format(cal.getTime());
cal.add(Calendar.DATE, 6);
weekday[1] = sdf.format(cal.getTime());
* 得到几年前的时间
* ParseException
public static String getDateYearBefore(String d, int year) throws ParseException {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Date dt = formatter.parse(d);
Calendar now = Calendar.getInstance();
now.setTime(dt);
now.set(Calendar.YEAR, now.get(Calendar.YEAR) - year);
String time = formatter.format(now.getTime());
Ani521smile
排名:千里之外
(8)(13)(2)(2)(1)

我要回帖

更多关于 joda time 相差多少年 的文章

 

随机推荐