如何用JodaTime设置固定日期?

时间:2016-08-25 00:02:16

标签: java jodatime

我正在寻找使用JodaTime创建固定日常工作的任何方法。我有一个JSpinner来设置整数值,我想得到这个值并创建日期。例如:JSpinner有15个,我想创建日期def thermal_lim_ineq_con(model, i, j, k): if line_loading_limit == True: P_branch_ij = (model.V_magn[i, k]**2) * np.float(real(Y_matrix[i, j])) - model.V_magn[i, k] * model.V_magn[j, k] * (np.float(real(Y_matrix[i, j])) * cos(model.V_angle[i, k]-model.V_angle[j, k]) + np.float(imag(Y_matrix[i,j])) * sin(model.V_angle[i, k]-model.V_angle[j, k])) Q_branch_ij = (model.V_magn[i, k]**2) * np.float(imag(Y_matrix[i, j])) + model.V_magn[i, k] * model.V_magn[j, k] * (np.float((real(Y_matrix[i, j]))) * sin(model.V_angle[i, k]-model.V_angle[j, k]) - np.float(imag(Y_matrix[i,j])) * cos(model.V_angle[i, k]-model.V_angle[j, k])) return P_branch_ij**2 + Q_branch_ij**2 <= limits_flows[i, j]**2 else: return Constraint.Skip 2016-09-152016-10-15

我怎么能用JodaTime做到这一点?

1 个答案:

答案 0 :(得分:4)

java.time

Joda-Time项目现在处于维护模式,团队建议迁移到java.time类。 java.time框架内置于Java 8及更高版本中。

大部分java.time功能都被反向移植到Java 6&amp; ThreeTen-Backport中的7,并进一步适应Android中的ThreeTenABP(见How to use…)。

java.time.LocalDate

LocalDate类表示没有时间且没有时区的仅限日期的值。

您可以指定年,月和日。

LocalDate ld = LocalDate.of( 2016 , 1 , 15 );

你可以换几个月。 java.time类使用Immutable Objects模式,因此基于原始值生成新的新对象。

LocalDate september = ld.withMonth( 9 ); // 1-12 for January-December.

您可以添加/减去月份。

LocalDate nextMonth = ld.plusMonths( 1 );
LocalDate priorMonth = ld.minusMonths( 1 );

您可以使用任何LocalDate并将日期调整为15日。

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

如果月份的某个月份的数字无效,则会引发DateTimeException的陷阱,例如2月份的31。

顺便说一句,您可能会发现YearMonthMonthDay类很方便,而Month枚举也可以。

约达时间

如果您必须使用Joda-Time,它会提供与java.time.LocalDate非常相似的LocalDate类。

LocalDate ld = new LocalDate( 2016 , 1 , 7 );
LocalDate fifteenthSameMonth = ld.withDayOfMonth( 15 );