在比较中比较日期和向日期添加天数

时间:2013-12-02 20:59:54

标签: java date

我完全不在这里。我有这个伪代码,我想用Java编写,但不知道从哪里开始。以下是我想表达的逻辑。任何建议都将不胜感激。

if(bestBeforeDate <= today() + 2days) // if a product is two days before its best before date
toShipOut = false;
else if (bestBeforeDate >= today >= bbDate- 8 days) // from 8 days before best before day
DiscountedPrice();
else
toShipOut = true;

3 个答案:

答案 0 :(得分:1)

结帐Date

<击>

注意构造函数Date(int year, int month, int date)

还要注意布尔方法after(Date when)

你应该能够找到你需要的一切。

GregorionCalendar通常比Date更受欢迎,但它是相同的概念。 GregorianCalendar(int year, int month, int dayOfMonth)

public int compareTo(Calendar anotherCalendar)

答案 1 :(得分:1)

使用 Calendar.add()添加天数。每次添加都需要一个临时的日历

Calendar c = Calendar.getInstance();
c.setTime(new Date()); // Current date
c.add(Calendar.DATE, 2); // Adding 2 days

答案 2 :(得分:1)

小心日期/日历类

警告:与Java捆绑在一起的java.util.Date/Calendar类非常糟糕。相反,使用第三方库Joda-Time,或者在Java 8中使用新的JSR 310功能(受Joda-Time启发)。

考虑

考虑时间和日期。和时区。通常最好存储和使用UTC时间(没有时区偏移),然后转换为分区日期时间以便呈现给用户。

示例代码

我不承诺这个源代码示例在逻辑上是一致的,但它会让你朝着正确的方向前进。 Mac上的Java 7上的Joda-Time 2.3。

伪代码中的布尔逻辑是有缺陷的,所以我忽略了这个方面。我专注于日期 - 时间角度。

// © 2013 Basil Bourque. This source code may be used freely forever by anyone taking full responsibility for doing so.
// import org.joda.time.*;

DateTimeZone denverTimeZone = DateTimeZone.forID( "America/Denver" );

// In real world, get 'bestBeforeDate' from storage. Stored in UTC.
// Call 'withTimeAtStartOfDay' method rather than try to set midnight. Not every day in every time zone has a midnight.
// For this example, we'll hard-code bestBeforeDate to first moment of day Nov 1 in Denver. Then convert to UTC.
DateTime bestBeforeDate = new DateTime( 2013, DateTimeConstants.NOVEMBER, 1, 3, 3, denverTimeZone ).withTimeAtStartOfDay().toDateTime( DateTimeZone.UTC );

DateTime now = new DateTime().toDateTime( DateTimeZone.UTC );
DateTime twoDaysFromNow = now.plusDays( 2 );

if ( bestBeforeDate.isBefore( twoDaysFromNow ) ) {
    // Do something
} else {
    // Do something else.
}

System.out.println( "bestBeforeDate: " + bestBeforeDate );
System.out.println( "now: " + now );
System.out.println( "twoDaysFromNow: " + twoDaysFromNow );

跑步时......

bestBeforeDate: 2013-11-01T06:00:00.000Z
now: 2013-12-03T04:54:55.405Z
twoDaysFromNow: 2013-12-05T04:54:55.405Z