我完全不在这里。我有这个伪代码,我想用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;
答案 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