视频: excel 2013 曲線圖(XY軸) 2024
正如您不能使用Java的内置比较运算符和日期一样,您也可能不使用内置的数学运算符。相反,您可以使用各种
加
和
减去
方法对日期执行加法和减法,并且可以通过使用
直到
方法来确定两个日期之间的差异。
在进行日期和时间计算时需要考虑的一个重要事实是Date-Time对象是不可变的。这意味着一旦创建了Date-Time对象,就不能更改它的值。在Date-Time对象上执行计算时,结果是一个具有新值的新Date-Time对象。
<!加
和
减号
方法可让您将各种日期和时间单位添加到Date-Time对象。每个
LocalDate
类有四个变体,允许您为
LocalDate
对象添加或减去年,月,周和天。以下代码打印当前日期,明天的日期以及从现在开始的一周,一个月和一年的日期:
系统。出。 println(“Today:”+ LocalDate。now());
系统。出。 println(“Next week:”+ LocalDate。now()。plusWeeks(1));
系统。出。 println(“Next month:”+ LocalDate。now()。plusMonths(1));
系统。出。 println(“Next year:”+ LocalDate。now()。plusYears(1));
要确定两个日期之间的差异,请使用
至
方法。它计算日期和作为第一个参数传递的日期之间的差异,以第二个参数指示的单位度量。例如,以下代码确定2014年5月16日至2014年12月15日之间的天数:
LocalDate date2 = LocalDate。解析(“2014年12月15日”);
系统。出。 println(date1。until(date2,ChronoUnit。DAYS));一些日期计算可能会更复杂一点。例如,考虑每个月15号准备发票的业务。以下代码片段显示从当前日期到下一个开票日期的天数:
LocalDate today = LocalDate。现在();
LocalDate invDate = LocalDate。 (today。getYear(),
today。getMonthValue(),15);
if(today。getDayOfMonth()> 15)
invDate = invDate。 plusMonths(1);
long daysToInvoice = today。直到(invDate,
ChronoUnit。DAYS);
系统。出。 println(daysToInvoice
+“,直到下一个发票日期。“);
这个例子首先获取当前日期,然后创建一个新的
LocalDate
对象,代表当前月份的第15个。那么,如果当月的当天日期大于15,则会在发票日期中添加一个月。换句话说,如果是16号或更晚,发票在
之后的
月份的15号发生,而不是在本月。然后使用 至 方法确定当前日期与下一个开票日期之间的天数。 ChronoUnit
是一个枚举,它定义了日期和时间计算中可以使用的各种时间单位。可能的值是:
CENTURIES
DAYS
DECADES
ERAS
FOREVER
半天
HOURS
MICROS
MILLENNIA
MILLIS
大多数这些都是不言而喻的,但其中两个有点奇怪:
ERA
表示是否日期是指共同时代(CE,也称为AD)或时代之前(BCE,也称为BC)。
FOREVER
表示可以表示为持续时间的最大值。可悲的是,Java不会让你永远活着。以下代码将引发异常:
LocalDate birthday = LocalDate。解析(“1959年5月16日);
生日=生日。加上(1,ChronoUnit。FOREVER);
请注意
ChronoUni
t在
-
java中。时间。 temporal
包,因此请务必在使用 -
ChronoUnit
:
import java的任何程序的顶部包含以下语句。时间。颞。 *;