第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 Android 中的 2 個日期之間進(jìn)行減法?

如何在 Android 中的 2 個日期之間進(jìn)行減法?

烙印99 2022-06-04 15:52:41
我從日期選擇器中選擇了一個日期,從當(dāng)前系統(tǒng)時間中選擇了另一個日期。當(dāng)我想減去 2 個日期時,其中一個是 2000 年之前的日期,我得到了一些無效的答案。我該如何解決?public class Duration {    private int year,month,day,hour,min,seconds;    public Duration(long endTime, long startTime){        Calendar calendar1=new GregorianCalendar();        calendar1.setTimeInMillis(endTime);        Calendar calendar=new GregorianCalendar();        calendar.setTimeInMillis(startTime);        this.year=calendar1.get(Calendar.YEAR)-calendar.get(Calendar.YEAR);        this.month=calendar1.get(Calendar.MONTH)-calendar.get(Calendar.MONTH);        this.day=calendar1.get(Calendar.DAY_OF_MONTH)-calendar.get(Calendar.DAY_OF_MONTH);        this.hour=calendar1.get(Calendar.HOUR)-calendar.get(Calendar.HOUR);        this.min=calendar1.get(Calendar.MINUTE)-calendar.get(Calendar.MINUTE);        this.seconds=calendar1.get(Calendar.SECOND)-calendar.get(Calendar.SECOND);        System.out.println(toString());    }    public int getDay() {        return day;    }    public int getHour() {        return hour;    }    public int getMin() {        return min;    }    public int getMonth() {        return month;    }    public int getSeconds() {        return seconds;    }    public int getYear() {        return year;    }    @Override    public String toString() {        return year+" "+month+" "+day+" "+hour+" "+min+" "+seconds;    }}當(dāng)我想從當(dāng)前時間減去 1998/2/jan 的日期時,我得到以下結(jié)果:-1879 1 3 10 24 34年份不正確。
查看完整描述

3 回答

?
瀟湘沐

TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超6個贊

方法:1


 try {

    DateFormat df = new SimpleDateFormat("dd-MM-yyyy hh:mm:ss");

    Date date1 = new java.util.Date();

    Date date2 = df.parse("04-02-2019 12:00:00");

    long diff = date2.getTime() - date1.getTime();


    Calendar cal = Calendar.getInstance();

    cal.setTimeInMillis(diff);

    int year = cal.get(Calendar.YEAR);

    Log.e("Diff Year" , year+ " --" + diff);

    Log.e("Diff Value" , date1.getTime() + " -- " + date2.getTime() + " --" + diff);


} catch (ParseException e){

    Log.e("Diff Value", "Exception", e.getMessage().toString());

}

方法:2


LocalDate d1 = LocalDate.parse("2017-04-02", 

DateTimeFormatter.ISO_LOCAL_DATE);

LocalDate d2 = LocalDate.parse("2018-04-04", 

DateTimeFormatter.ISO_LOCAL_DATE);

Duration dateDifference = Duration.between(d1.atStartOfDay(), 

d2.atStartOfDay());

long dayDifference = dateDifference.toDays();

減去兩個日期并在對象中添加差異值 Calendar并從其對象中檢索年份值。


查看完整回答
反對 回復(fù) 2022-06-04
?
嗶嗶one

TA貢獻(xiàn)1854條經(jīng)驗(yàn) 獲得超8個贊

LocalDate d1 = LocalDate.parse("2018-05-26", DateTimeFormatter.ISO_LOCAL_DATE);

LocalDate d2 = LocalDate.parse("2018-05-28", DateTimeFormatter.ISO_LOCAL_DATE);

Duration diff = Duration.between(d1.atStartOfDay(), d2.atStartOfDay());

long diffDays = diff.toDays();

您將獲得長格式的天數(shù)。另請參閱 Mark Byers 的這個答案。


查看完整回答
反對 回復(fù) 2022-06-04
?
尚方寶劍之說

TA貢獻(xiàn)1788條經(jīng)驗(yàn) 獲得超4個贊

LocalDate               // Represent a date-only value, without time-of-day and without time zone.

.of( 1999 , 1 , 23 )    // Use factory methods to instantiate rather than constructors, in the *java.time* classes.

.minusWeeks( 12 )       // Do date-math with `plus…` and `…minus` methods.

.toString()             // Generate text as a `String` object with text representing the date value in standard ISO 8601 format: YYYY-MM-DD

請參閱在 IdeOne.com 上實(shí)時運(yùn)行的代碼。


1998-10-31


避免遺留的日期時間類

永遠(yuǎn)不要使用Calendar或Date類。那些可怕的類在幾年前被java.time類所取代。


LocalDate

該類LocalDate表示沒有時間、沒有時區(qū)或從 UTC 偏移的僅日期值。


時區(qū)對于確定日期至關(guān)重要。對于任何給定的時刻,日期在全球范圍內(nèi)因區(qū)域而異。例如,法國巴黎午夜過后幾分鐘是新的一天,而魁北克蒙特利爾仍然是“昨天” 。


如果未指定時區(qū),JVM 會隱式應(yīng)用其當(dāng)前默認(rèn)時區(qū)。該默認(rèn)值可能會在運(yùn)行時(!)期間隨時更改,因此您的結(jié)果可能會有所不同。最好將您想要/預(yù)期的時區(qū)明確指定為參數(shù)。


以、或等格式指定適當(dāng)?shù)臅r區(qū)名稱。永遠(yuǎn)不要使用 2-4 個字母的縮寫,例如或因?yàn)樗鼈儾皇钦嬲臅r區(qū),不是標(biāo)準(zhǔn)化的,甚至不是唯一的(!)。Continent/RegionAmerica/MontrealAfrica/CasablancaPacific/AucklandESTIST


ZoneId z = ZoneId.of( "America/Montreal" ) ;  

LocalDate today = LocalDate.now( z ) ;

如果你想使用 JVM 的當(dāng)前默認(rèn)時區(qū),請求它并作為參數(shù)傳遞。如果省略,代碼會變得模棱兩可,因?yàn)槲覀儾淮_定您是否打算使用默認(rèn)值,或者您是否像許多程序員一樣沒有意識到這個問題。


ZoneId z = ZoneId.systemDefault() ;  // Get JVM’s current default time zone.

或指定日期。您可以通過數(shù)字設(shè)置月份,1 月至 12 月的編號為 1-12。


LocalDate ld = LocalDate.of( 1986 , 2 , 23 ) ;  // Years use sane direct numbering (1986 means year 1986). Months use sane numbering, 1-12 for January-December.

或者,更好的是,使用Month預(yù)定義的枚舉對象,一年中的每個月一個。提示:Month在整個代碼庫中使用這些對象,而不是僅僅使用整數(shù),以使您的代碼更具自文檔性、確保有效值并提供類型安全。Year&同上YearMonth。


LocalDate ld = LocalDate.of( 1986 , Month.FEBRUARY , 23 ) ;

Period

要以年-月-日表示時間跨度,請使用Period.


Period p = Period.ofDays( 5 ) ;

日期時間數(shù)學(xué)

您可以通過調(diào)用and方法在java.time中執(zhí)行日期時間值的加法和減法。plus…minus…


LocalDate later = ldt.plus( p ) ;

Duration

如果您想用天(24 小時的時間塊,與日歷無關(guān))、小時、分鐘、秒和小數(shù)秒來表示時間跨度,請使用Duration.


您的問題不清楚,但似乎是關(guān)于 2000 年。java.time類的那一年沒有什么特別之處。


您可以查詢java.time類的年份值。


int year = ld.getYear() ;

if( year < 2000 ) { … }


查看完整回答
反對 回復(fù) 2022-06-04
  • 3 回答
  • 0 關(guān)注
  • 206 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號