日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java做日历怎么对齐日期_如何使用Java日历从日期中减去X天?

發布時間:2024/4/18 java 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java做日历怎么对齐日期_如何使用Java日历从日期中减去X天? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

如何使用Java日歷從日期中減去X天?

有人知道使用Java日歷從日期中減去X天的簡單方法嗎?

我無法找到任何允許我直接從Java中的日期減去X天的函數。 有人能指出我正確的方向嗎?

9個解決方案

273 votes

取自這里的文檔:

根據日歷的規則,將指定的時間量添加或減去給定的日歷字段。 例如,要從日歷的當前時間減去5天,您可以通過調用以下內容來實現:

Calendar calendar = Calendar.getInstance(); // this would default to now

calendar.add(Calendar.DAY_OF_MONTH, -5).

Anson Smith answered 2019-04-16T21:34:21Z

38 votes

您可以使用Date方法并將其傳遞給負數。 但是,您還可以編寫一個更簡單的方法,不使用Date類,如下所示

public static void addDays(Date d, int days)

{

d.setTime( d.getTime() + (long)days*1000*60*60*24 );

}

這將獲取日期的時間戳值(自紀元以來的毫秒數)并添加適當的毫秒數。 您可以為days參數傳遞負整數以進行減法。 這比“適當的”日歷解決方案簡單:

public static void addDays(Date d, int days)

{

Calendar c = Calendar.getInstance();

c.setTime(d);

c.add(Calendar.DATE, days);

d.setTime( c.getTime().getTime() );

}

請注意,這兩個解決方案都會更改作為參數傳遞的Date對象,而不是返回一個全新的Date。如果需要,可以輕松更改其中任何一個函數。

Eli Courtwright answered 2019-04-16T21:34:59Z

35 votes

Anson的答案適用于簡單的情況,但是如果你要進行更復雜的日期計算,我建議你查看Joda Time。 它會讓你的生活更輕松。

在Joda時間你可以做的

DateTime dt = new DateTime();

DateTime fiveDaysEarlier = dt.minusDays(5);

Mike Deck answered 2019-04-16T21:35:29Z

10 votes

TL;博士

LocalDate.now().minusDays( 10 )

最好指定時區。

LocalDate.now( ZoneId.of( "America/Montreal" ) ).minusDays( 10 )

細節

與早期版本的Java捆綁在一起的舊日期時間類,例如YearQuarter/.Calendar,已被證明是麻煩,令人困惑和有缺陷的。 避免他們。

java.time

Java 8及更高版本使用新的java.time框架取代了那些舊類。 請參閱教程。 由JSR 310定義,靈感來自Joda-Time,并由ThreeTen-Extra項目擴展。 ThreeTen-Backport項目將類反向移植到Java 6&7; Android的ThreeTenABP項目。

該問題含糊不清,如果要求僅提供日期或日期時間,則不清楚。

YearQuarter

對于僅限日期,沒有時間,請使用YearQuarter類。 請注意,在確定日期(例如“今天”)時,時區至關重要。

LocalDate today = LocalDate.now( ZoneId.of( "America/Montreal" ) );

LocalDate tenDaysAgo = today.minusDays( 10 );

YearQuarter

如果您的意思是日期時間,那么請使用YearQuarter類來獲取UTC時間軸上的時刻。 從那里,調整到時區以獲得YearQuarter對象。

Instant now = Instant.now(); // UTC.

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

ZonedDateTime zdt = ZonedDateTime.ofInstant( instant , zoneId );

ZonedDateTime tenDaysAgo = zdt.minusDays( 10 );

關于java.time

java.time框架內置于Java 8及更高版本中。 這些類取代了麻煩的舊遺留日期時間類,如YearQuarter,YearQuarter,&YearQuarter。

現在處于維護模式的Joda-Time項目建議遷移到java.time類。

要了解更多信息,請參閱Oracle教程。 并搜索Stack Overflow以獲取許多示例和解釋。 規范是JSR 310。

您可以直接與數據庫交換java.time對象。 使用符合JDBC 4.2或更高版本的JDBC驅動程序。 不需要字符串,不需要YearQuarter類。

從哪里獲取java.time類?

Java SE 8,Java SE 9,Java SE 10及更高版本內置。

帶有捆綁實現的標準Java API的一部分。

Java 9增加了一些小功能和修復。

Java SE 6和Java SE 7許多java.time功能都被反向移植到Java 6& 7在ThreeTen-Backport。

Android的更高版本的Android捆綁java.time類的實現。

對于早期的Android(< 26),ThreeTenABP項目采用ThreeTen-Backport(如上所述)。 請參見如何使用ThreeTenABP ....

ThreeTen-Extra項目使用其他類擴展了java.time。 該項目是未來可能添加到java.time的試驗場。 您可以在這里找到一些有用的課程,如YearQuarter,YearQuarter,YearQuarter等。

Basil Bourque answered 2019-04-16T21:37:22Z

5 votes

int x = -1;

Calendar cal = ...;

cal.add(Calendar.DATE, x);

編輯:解析器似乎不喜歡Javadoc的鏈接,所以這里是純文本:

[http://java.sun.com/j2se/1.4.2/docs/api/java/util/Calendar.html#add(int,)int)

matt b answered 2019-04-16T21:37:53Z

5 votes

而不是按照Eli的建議編寫我自己的Date,我更愿意使用Apache的DateUtils。 它非常方便,特別是當您必須在項目中使用多個位置時。

API說:

Date

在返回新對象的日期中添加若干天。

請注意,它返回一個新的Date對象,并且不會對前一個對象進行更改。

Risav Karna answered 2019-04-16T21:38:40Z

1 votes

有人推薦Joda Time所以 - 我一直在使用這個CalendarDate類[http://calendardate.sourceforge.net]

這是一個與Joda Time有點競爭的項目,但只有2個班級更基本。 它非常方便,并且非常適合我需要的東西,因為我不想使用比我的項目更大的包。 與Java對應物不同,它的最小單位是當天,所以它實際上是一個日期(沒有它到毫秒或其他東西)。 一旦你創建了日期,你所做的所有減法就像myDay.addDays(-5)那樣可以追溯到5天。 您可以使用它來查找星期幾和類似的事情。另一個例子:

CalendarDate someDay = new CalendarDate(2011, 10, 27);

CalendarDate someLaterDay = today.addDays(77);

和:

//print 4 previous days of the week and today

String dayLabel = "";

CalendarDate today = new CalendarDate(TimeZone.getDefault());

CalendarDateFormat cdf = new CalendarDateFormat("EEE");//day of the week like "Mon"

CalendarDate currDay = today.addDays(-4);

while(!currDay.isAfter(today)) {

dayLabel = cdf.format(currDay);

if (currDay.equals(today))

dayLabel = "Today";//print "Today" instead of the weekday name

System.out.println(dayLabel);

currDay = currDay.addDays(1);//go to next day

}

mikato answered 2019-04-16T21:39:13Z

1 votes

它可以通過以下方式輕松完成

Calendar calendar = Calendar.getInstance();

// from current time

long curTimeInMills = new Date().getTime();

long timeInMills = curTimeInMills - 5 * (24*60*60*1000); // `enter code here`subtract like 5 days

calendar.setTimeInMillis(timeInMills);

System.out.println(calendar.getTime());

// from specific time like (08 05 2015)

calendar.set(Calendar.DAY_OF_MONTH, 8);

calendar.set(Calendar.MONTH, (5-1));

calendar.set(Calendar.YEAR, 2015);

timeInMills = calendar.getTimeInMillis() - 5 * (24*60*60*1000);

calendar.setTimeInMillis(timeInMills);

System.out.println(calendar.getTime());

rab answered 2019-04-16T21:39:38Z

0 votes

Eli Courtwright的第二個解決方案是錯誤的,它應該是:

Calendar c = Calendar.getInstance();

c.setTime(date);

c.add(Calendar.DATE, -days);

date.setTime(c.getTime().getTime());

user178973 answered 2019-04-16T21:40:03Z

總結

以上是生活随笔為你收集整理的java做日历怎么对齐日期_如何使用Java日历从日期中减去X天?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。