JAVA计算日期,时间差的几种方法
Java计算年月日时分秒时间差(两个时间相减)

Java计算年⽉⽇时分秒时间差(两个时间相减)//测试主⽅法public static void main(String[] args) {Date currentTime = df.parse("2004-03-26 13:31:40"); //当前系统时间Date firstTime = df.parse("2004-01-02 11:30:24"); //查询的数据时间String str=getTime(currentTime ,firstTime );System.out.println("获取的年⽉⽇时分秒时间差为:"+str);}//获取时间差⽅法public static String getTime(Date currentTime,Date firstTime){long diff = currentTime.getTime() - firstTime.getTime();//这样得到的差值是微秒级别Calendar currentTimes =dataToCalendar(currentTime);//当前系统时间转Calendar类型Calendar firstTimes =dataToCalendar(firstTime);//查询的数据时间转Calendar类型int year = currentTimes.get(Calendar.YEAR) - firstTimes.get(Calendar.YEAR);//获取年int month = currentTimes.get(Calendar.MONTH) - firstTimes.get(Calendar.MONTH);int day = currentTimes.get(Calendar.DAY_OF_MONTH) - firstTimes.get(Calendar.DAY_OF_MONTH);if (day < 0) {month -= 1;currentTimes.add(Calendar.MONTH, -1);day = day + currentTimes.getActualMaximum(Calendar.DAY_OF_MONTH);//获取⽇}if (month < 0) {month = (month + 12) % 12;//获取⽉year--;}long days = diff / (1000 * 60 * 60 * 24);long hours = (diff-days*(1000 * 60 * 60 * 24))/(1000* 60 * 60); //获取时long minutes = (diff-days*(1000 * 60 * 60 * 24)-hours*(1000* 60 * 60))/(1000* 60); //获取分钟long s=(diff/1000-days*24*60*60-hours*60*60-minutes*60);//获取秒String CountTime=""+"year"+"年"+month+"⽉"+day+"天"+hours+"⼩时"+minutes+"分"+s+"秒";return CountTime;}//Date类型转Calendar类型public static Calendar dataToCalendar(Date date) {Calendar calendar = Calendar.getInstance();calendar.setTime(date);return calendar;}。
java计算两个时间相差(天、小时、分钟、秒)

java计算两个时间相差(天、⼩时、分钟、秒)public static Long dateDiff(String startTime, String endTime, String format, String str) {// 按照传⼊的格式⽣成⼀个simpledateformate对象SimpleDateFormat sd = new SimpleDateFormat(format);long nd = 1000 * 24 * 60 * 60;// ⼀天的毫秒数long nh = 1000 * 60 * 60;// ⼀⼩时的毫秒数long nm = 1000 * 60;// ⼀分钟的毫秒数long ns = 1000;// ⼀秒钟的毫秒数long diff;long day = 0;long hour = 0;long min = 0;long sec = 0;// 获得两个时间的毫秒时间差异try {diff = sd.parse(endTime).getTime() - sd.parse(startTime).getTime();day = diff / nd;// 计算差多少天hour = diff % nd / nh + day * 24;// 计算差多少⼩时min = diff % nd % nh / nm + day * 24 * 60;// 计算差多少分钟sec = diff % nd % nh % nm / ns;// 计算差多少秒// 输出结果System.out.println("时间相差:" + day + "天" + (hour - day * 24) + "⼩时"+ (min - day * 24 * 60) + "分钟" + sec + "秒。
");System.out.println("hour=" + hour + ",min=" + min);if (str.equalsIgnoreCase("h")) {return hour;} else {return min;}} catch (ParseException e) {// TODO Auto-generated catch blocke.printStackTrace();}if (str.equalsIgnoreCase("h")) {return hour;} else {return min;}}。
Java获取固定格式日期计算日期相差时长

Java获取固定格式⽇期计算⽇期相差时长1、固定⽇期格式public class TimeFour {public static void main(String[] args) throws ParseException{TimeFour four = new TimeFour();four.test();}public void test() throws ParseException{Date date = new Date();DateFormat df3 = new SimpleDateFormat("yyy-MM-dd HH-mm-ss");DateFormat df4 = new SimpleDateFormat("yyy年MM⽉dd⽇ HH时mm分ss秒");System.out.println("按照指定格式 yyyy年MM⽉dd⽇ hh时mm分ss秒,区域为中⽂:" + df4.format(date));System.out.println("按照指定格式 yyyy年MM⽉dd⽇ hh时mm分ss秒,区域为中⽂:" + df3.format(date));Date date4 = df4.parse("2007年11⽉30⽇ 02时51分18秒");System.out.println(date4);}}2、获取当前时间import java.util.Date;import java.text.SimpleDateFormat;public class NowString {public static void main(String[] args) {SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置⽇期格式System.out.println(df.format(new Date()));// new Date()为获取当前系统时间}}3、计算时间差1. public static void calculateTimeDifferenceBySimpleDateFormat() throws ParseException {2.SimpleDateFormat simpleFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm");3./*天数差*/4.Date fromDate1 = simpleFormat.parse("2018-03-01 12:00");5.Date toDate1 = simpleFormat.parse("2018-03-12 12:00");6.long from1 = fromDate1.getTime();7.long to1 = toDate1.getTime();8.int days = (int) ((to1 - from1) / (1000 * 60 * 60 * 24));9.System.out.println("两个时间之间的天数差为:" + days);10.11./*⼩时差*/12.Date fromDate2 = simpleFormat.parse("2018-03-01 12:00");13.Date toDate2 = simpleFormat.parse("2018-03-12 12:00");14.long from2 = fromDate2.getTime();15.long to2 = toDate2.getTime();16.int hours = (int) ((to2 - from2) / (1000 * 60 * 60));17.System.out.println("两个时间之间的⼩时差为:" + hours);18.19./*分钟差*/20.Date fromDate3 = simpleFormat.parse("2018-03-01 12:00");21.Date toDate3 = simpleFormat.parse("2018-03-12 12:00");22.long from3 = fromDate3.getTime();23.long to3 = toDate3.getTime();24.int minutes = (int) ((to3 - from3) / (1000 * 60));25.System.out.println("两个时间之间的分钟差为:" + minutes);26.}。
java如何获取两个日期的时间差

java如何获取两个⽇期的时间差本⽂实例为⼤家分享了java如何获取两个⽇期的时间差,供⼤家参考,具体内容如下rainBeginTime是从本地数据库获取的时间,格式为”yyyy-MM-ddTHH:mm:ss“。
主要逻辑:@SuppressLint("SimpleDateFormat")SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");df.setTimeZone(TimeZone.getTimeZone("GMT+08"));// 这⾥⼀定要设置GMT时区String currentTime = df.format(new Date());Date date1 = MyDateUtil.parseDate(trainBeginTime.replace("T"," "), "yyyy-MM-dd HH:mm:ss");Date date2 = MyDateUtil.parseDate(currentTime, "yyyy-MM-dd HH:mm:ss");// 获取相差的天数Calendar calendar = Calendar.getInstance();calendar.setTime(date1);long timeInMillis1 = calendar.getTimeInMillis();calendar.setTime(date2);long timeInMillis2 = calendar.getTimeInMillis();long betweenDays = ((timeInMillis2 - timeInMillis1) / (1000L*3600L*24L))+2;textView.setText("时间相差"+betweenDays+"天");其中MyDateUtil.java:import android.os.Build;import androidx.annotation.RequiresApi;import java.text.ParseException;import java.text.SimpleDateFormat;import java.time.Instant;import java.time.LocalDate;import java.time.ZoneId;import java.time.ZonedDateTime;import java.util.Calendar;import java.util.Date;/*** Description: ⽇期⼯具类*/public class MyDateUtil {/*** 将指定的⽇期字符串转换成⽇期* @param dateStr ⽇期字符串* @param pattern 格式* @return ⽇期对象*/public static Date parseDate(String dateStr, String pattern){SimpleDateFormat sdf = new SimpleDateFormat(pattern);Date date;try {date = sdf.parse(dateStr);} catch (ParseException e) {throw new RuntimeException("⽇期转化错误");}return date;}/*** 将指定的⽇期格式化成指定的⽇期字符串* @param date ⽇期对象* @param pattern 格式* @return 格式化后的⽇期字符串*/public static String dateFormate(Date date, String pattern){SimpleDateFormat sdf = new SimpleDateFormat(pattern);String dateStr;if(date == null){return "";}dateStr = sdf.format(date);return dateStr;}/*** 查询指定⽇期前后指定的天数* @param date ⽇期对象* @param days 天数* @return ⽇期对象*/public static Date incr(Date date, int days){if (date == null){return null;}Calendar calendar = Calendar.getInstance();calendar.setTime(date);calendar.add(Calendar.DAY_OF_MONTH, days);return calendar.getTime();}/*** 将LocalDate⽇期转化成Date* @param localDate LocalDate对象* @return Date对象*/@RequiresApi(api = Build.VERSION_CODES.O)public static Date localDateToDate(LocalDate localDate){if (localDate == null){return null;}ZoneId zoneId = ZoneId.systemDefault();ZonedDateTime zonedDateTime = localDate.atStartOfDay(zoneId);Date date = Date.from(zonedDateTime.toInstant());return date;}/*** 将Date转成LocalDate对象* @param date Date对象* @return LocalDate对象*/@RequiresApi(api = Build.VERSION_CODES.O)public static LocalDate dateToLocalDate(Date date){if (date == null){return null;}ZoneId zoneId = ZoneId.systemDefault();Instant instant = date.toInstant();LocalDate localDate = instant.atZone(zoneId).toLocalDate();return localDate;}}更多关于java时间操作的⽂章,请点击专题:以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
JAVA处理日期时间常用方法

JAVA处理日期时间常用方法在Java中,处理日期和时间是非常常见的操作。
Java提供了许多内置的类和方法来处理日期和时间,这些类和方法可以帮助我们进行日期的计算、格式化、比较等操作。
本篇文章将介绍Java中常用的日期时间处理方法。
1. Java中的Date类:Java中的Date类表示了一个特定的日期和时间。
可以使用Date类的构造方法来创建一个表示当前日期和时间的对象,例如:```javaDate date = new Date(;```Date类提供了一些常用的方法,例如getYear(, getMonth(, getDay(, getHour(, getMinute(, getSecond(等,可以用来获取当前日期和时间的具体信息。
2. Java中的Calendar类:Java中的Calendar类比Date类更加灵活,可以进行更复杂的日期和时间计算。
为了创建一个Calendar对象,可以使用Calendar类的getInstance(方法,例如:```javaCalendar calendar = Calendar.getInstance(;```Calendar类提供了各种方法来进行日期和时间的计算和操作,例如add(方法可以增加或减少指定的日期和时间字段,例如增加三天:```javacalendar.add(Calendar.DAY_OF_MONTH, 3);```set(方法可以设置指定的日期和时间字段,例如设置年份为2024年:```javacalendar.set(Calendar.YEAR, 2024);```get(方法可以获取指定的日期和时间字段的值,例如获取月份:```javaint month = calendar.get(Calendar.MONTH);```其他常用的操作还包括比较两个日期的大小、格式化日期等。
3. Java中的SimpleDateFormat类:Java中的SimpleDateFormat类用于格式化日期和时间的输出。
Java获取时间差(天数差,小时差,分钟差)代码示例

Java获取时间差(天数差,⼩时差,分钟差)代码⽰例⽹上有很多博⽂是讲如何获取时间差的,我看了⼀下,多数是使⽤Calendar类来实现,但是都讲得⽐较乱,在这⾥我⽤SimpleDateFormat来实现,⽐较简单,我认为⽐较适合拿来⽤。
SimpleDateFormat 是⼀个以国别敏感的⽅式格式化和分析数据的具体类。
它允许格式化 (date -> text)、语法分析 (text -> date)和标准化。
SimpleDateFormat 允许以为⽇期-时间格式化选择任何⽤户指定的⽅式启动。
但是,希望⽤ DateFormat 中的getTimeInstance、 getDateInstance 或 getDateTimeInstance 创建⼀个⽇期-时间格式化程序。
每个类⽅法返回⼀个以缺省格式化⽅式初始化的⽇期/时间格式化程序。
可以根据需要⽤ applyPattern ⽅法修改格式化⽅式。
⾸先我们先初始化我们的SimpleDateFormatSimpleDateFormat simpleFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm");//如2016-08-10 20:401.计算天数差。
String fromDate = simpleFormat.format("2016-05-01 12:00");String toDate = simpleFormat.format("2016-06-01 12:00");long from = simpleFormat.parse(fromDate).getTime();long to = simpleFormat.parse(toDate).getTime();int days = (int) ((to - from)/(1000 * 60 * 60 * 24));2.计算⼩时差String fromDate = simpleFormat.format("2016-05-01 12:00");String toDate = simpleFormat.format("2016-05-01 14:00");long from = simpleFormat.parse(fromDate).getTime();long to = simpleFormat.parse(toDate).getTime();int hours = (int) ((to - from)/(1000 * 60 * 60));3.计算分钟差:String fromDate = simpleFormat.format("2016-05-01 12:00");String toDate = simpleFormat.format("2016-05-01 12:50");long from = simpleFormat.parse(fromDate).getTime();long to = simpleFormat.parse(toDate).getTime();int minutes = (int) ((to - from)/(1000 * 60));总结以上就是本⽂关于Java获取时间差(天数差,⼩时差,分钟差)代码⽰例的全部内容,希望对⼤家有所帮助。
java获取两个天数差值的方法

java获取两个天数差值的方法在Java中,获取两个日期之间的天数差值是一个常见的需求。
下面是几种获取天数差值的方法:1. 使用Date类和getTime()方法可以使用Date类的getTime()方法获取两个日期之间的毫秒数差,然后将其转换为天数差。
示例代码:```javaimport java.util.Date;public class DateTest {public static void main(String[] args) {Date date1 = new Date();Date date2 = new Date(date1.getTime() + 1000 * 60 * 60 * 24 * 5); //date2比date1多5天long diff = date2.getTime() - date1.getTime(); //获取毫秒数差long days = diff / (1000 * 60 * 60 * 24); //转换为天数差 System.out.println('天数差:' + days);}}```2. 使用Calendar类也可以使用Calendar类来计算天数差值。
首先将两个日期转换为Calendar对象,然后使用它们的getTimeInMillis()方法获取毫秒数差,最后将其转换为天数差。
示例代码:```javaimport java.util.Calendar;public class CalendarTest {public static void main(String[] args) {Calendar calendar1 = Calendar.getInstance();Calendar calendar2 = Calendar.getInstance();calendar2.add(Calendar.DAY_OF_YEAR, 5); //calendar2比calendar1多5天long diff = calendar2.getTimeInMillis() -calendar1.getTimeInMillis(); //获取毫秒数差long days = diff / (1000 * 60 * 60 * 24); //转换为天数差 System.out.println('天数差:' + days);}}```3. 使用Java 8的日期时间APIJava 8引入了新的日期时间API,可以使用它来计算天数差值。
Java对日期Date类进行加减运算、年份加减月份加减、时间差等等

Java对⽇期Date类进⾏加减运算、年份加减⽉份加减、时间差等等实现代码⼀:import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;public class DateTestUtil {public static void main(String[] args) throws Exception {SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd");String str="20110823";Date dt=sdf.parse(str);Calendar rightNow = Calendar.getInstance();rightNow.setTime(dt);rightNow.add(Calendar.YEAR,-1);//⽇期减1年rightNow.add(Calendar.MONTH,3);//⽇期加3个⽉rightNow.add(Calendar.DAY_OF_YEAR,10);//⽇期加10天Date dt1=rightNow.getTime();String reStr = sdf.format(dt1);System.out.println(reStr);}}注:在Calendar对象的add⽅法中,第⼆个参数为正数表⽰“加”,负数表⽰“减”。
代码⼆: java date ⽇期加减天数测试类代码:import java.text.SimpleDateFormat;import java.util.Date;public class DateTest {public static void main(String[] arg){Date now = new Date();addAndSubtractDaysByGetTime(now,-5);addAndSubtractDaysByGetTime(now,5);addAndSubtractDaysByCalendar(now,-5);addAndSubtractDaysByCalendar(now,5);}public static Date addAndSubtractDaysByGetTime(Date dateTime/*待处理的⽇期*/,int n/*加减天数*/){//⽇期格式SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");SimpleDateFormat dd=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");System.out.println(df.format(new Date(dateTime.getTime() + n * 24 * 60 * 60 * 1000L)));//System.out.println(dd.format(new Date(dateTime.getTime() + n * 24 * 60 * 60 * 1000L)));//注意这⾥⼀定要转换成Long类型,要不n超过25时会出现范围溢出,从⽽得不到想要的⽇期值return new Date(dateTime.getTime() + n * 24 * 60 * 60 * 1000L);}public static Date addAndSubtractDaysByCalendar(Date dateTime/*待处理的⽇期*/,int n/*加减天数*/){//⽇期格式SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");SimpleDateFormat dd=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");java.util.Calendar calstart = java.util.Calendar.getInstance();calstart.setTime(dateTime);calstart.add(java.util.Calendar.DAY_OF_WEEK, n);System.out.println(df.format(calstart.getTime()));//System.out.println(dd.format(calstart.getTime()));return calstart.getTime();}}运⾏结果:2014-10-062014-10-162014-10-062014-10-16代码三:在⽹上查阅资料,加上⾃⼰总结的⼀些关于Date类的⼯具类。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1. 手工计算
2.采用一个三方的jar包(Joda time library)
3. 利用TimeUnit类(java.util.concurrent 包中)
方法一:手工计算
程序代码
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateDifferentExample {
public static void main(String[] args) {
String dateStart = "01/14/2012 09:29:58";
String dateStop = "01/15/2012 10:31:48";
//HH converts hour in 24 hours format (0-23), day calculation SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
Date d1 = null;
Date d2 = null;
try {
d1 = format.parse(dateStart);
d2 = format.parse(dateStop);
//in milliseconds
long diff = d2.getTime() - d1.getTime();
long diffSeconds = diff / 1000 % 60;
long diffMinutes = diff / (60 * 1000) % 60;
long diffHours = diff / (60 * 60 * 1000) % 24;
long diffDays = diff / (24 * 60 * 60 * 1000);
System.out.print(diffDays + " days, ");
System.out.print(diffHours + " hours, ");
System.out.print(diffMinutes + " minutes, ");
System.out.print(diffSeconds + " seconds.");
} catch (Exception e) {
e.printStackTrace();
}
}
}
结果为:
程序代码
1 days, 1 hours, 1 minutes, 50 seconds.
方法二:采用joda-time-2.1.jar (这里去下载:/)
程序代码
import java.text.SimpleDateFormat;
import java.util.Date;
import org.joda.time.DateTime;
import org.joda.time.Days;
import org.joda.time.Hours;
import org.joda.time.Minutes;
import org.joda.time.Seconds;
public class JodaDateDifferentExample {
public static void main(String[] args) {
String dateStart = "01/14/2012 09:29:58";
String dateStop = "01/15/2012 10:31:48";
SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
Date d1 = null;
Date d2 = null;
try {
d1 = format.parse(dateStart);
d2 = format.parse(dateStop);
DateTime dt1 = new DateTime(d1);
DateTime dt2 = new DateTime(d2);
System.out.print(Days.daysBetween(dt1, dt2).getDays() + " days, ");
System.out.print(Hours.hoursBetween(dt1, dt2).getHours() % 24 + " hours, ");
System.out.print(Minutes.minutesBetween(dt1,
dt2).getMinutes() % 60 + " minutes, ");
System.out.print(Seconds.secondsBetween(dt1,
dt2).getSeconds() % 60 + " seconds.");
} catch (Exception e) {
e.printStackTrace();
}
}
}
结果为:
程序代码
1 days, 1 hours, 1 minutes, 50 seconds.
方法三: 采用TimeUnit ( java.util.concurrent包中的TimeUnit) 程序代码
long diffSeconds = diff / 1000 % 60;
long diffMinutes = diff / (60 * 1000) % 60;
程序代码
long diffSeconds = LISECONDS.toSeconds(diff) % 60; long diffMinutes = LISECONDS.toMinutes(diff) % 60; long diffHours = LISECONDS.toHours(diff) % 24; long diffDays = LISECONDS.toDays(diff);
文章参考:/article/java/361.htm。