java如何獲取兩個(gè)日期的時(shí)間差
本文實(shí)例為大家分享了java如何獲取兩個(gè)日期的時(shí)間差,供大家參考,具體內(nèi)容如下
rainBeginTime是從本地?cái)?shù)據(jù)庫(kù)獲取的時(shí)間,格式為”yyyy-MM-ddTHH:mm:ss“。
主要邏輯:
@SuppressLint("SimpleDateFormat") SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); df.setTimeZone(TimeZone.getTimeZone("GMT+08"));// 這里一定要設(shè)置GMT時(shí)區(qū) 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"); // 獲取相差的天數(shù) 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("時(shí)間相差"+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 { /** * 將指定的日期字符串轉(zhuǎn)換成日期 * @param dateStr 日期字符串 * @param pattern 格式 * @return 日期對(duì)象 */ 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("日期轉(zhuǎn)化錯(cuò)誤"); } return date; } /** * 將指定的日期格式化成指定的日期字符串 * @param date 日期對(duì)象 * @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; } /** * 查詢指定日期前后指定的天數(shù) * @param date 日期對(duì)象 * @param days 天數(shù) * @return 日期對(duì)象 */ 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日期轉(zhuǎn)化成Date * @param localDate LocalDate對(duì)象 * @return Date對(duì)象 */ @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轉(zhuǎn)成LocalDate對(duì)象 * @param date Date對(duì)象 * @return LocalDate對(duì)象 */ @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; } }
更多關(guān)于java時(shí)間操作的文章,請(qǐng)點(diǎn)擊專題:《java時(shí)間操作》
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
idea運(yùn)行java的配置詳細(xì)教程(包含maven,mysql下載配置)
程序員們?cè)陂_發(fā)的時(shí)候,一定會(huì)用到Intellij?IDEA這個(gè)集成開發(fā)環(huán)境,這篇文章主要給大家介紹了關(guān)于idea運(yùn)行java的配置(包含maven,mysql下載配置)的相關(guān)資料,需要的朋友可以參考下2024-05-05使用java實(shí)現(xiàn)各種數(shù)據(jù)統(tǒng)計(jì)圖(柱形圖,餅圖,折線圖)
用Jfree實(shí)現(xiàn)條形柱狀圖表,java代碼實(shí)現(xiàn)。可經(jīng)常用于報(bào)表的制作,代碼自動(dòng)生成后可以自由查看??梢宰杂膳渲脠D表的各個(gè)屬性,用來(lái)達(dá)到自己的要求和目的。本文給大家介紹使用java實(shí)現(xiàn)各種數(shù)據(jù)統(tǒng)計(jì)圖(柱形圖,餅圖,折線圖),需要的朋友可以參考下2015-10-10Java獲取時(shí)間如何將當(dāng)前時(shí)間減一天、一月、一年、并格式化
這篇文章主要介紹了Java獲取時(shí)間,將當(dāng)前時(shí)間減一天、一月、一年,并加以格式化,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-09-09