mockServer和dexexpect (content(). xml)与当前日期连接



我得到一个断言错误"期望的子元素,但在断言andexexpect XML时为空。如果我输入as作为字符串"2020-10-01 05:00 "它可以正常工作,但如果我将日期连接到字符串中,如:

LocalDate startDate = LocalDate.now().minusDays(90);
String startDateLine =  "<start-date>" + startDate + "-5:00</start-date>n";

抛出AssertionError。在调用之前,我已经验证了XML是正确的,所以我不确定获取日期并转换为字符串会导致测试失败。

更新

不要将偏移字符串添加到LocalDate字符串中以将其转换为OffsetDateTime字符串。下面显示的是将LocalDate转换为OffsetDateTime的惯用方法

LocalDate.of(2020, 10, 1)
.atStartOfDay()
.atOffset(ZoneOffset.of("-05:00"));

演示:

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.OffsetDateTime;
import java.time.ZoneOffset;
public class Main {
public static void main(String[] args) {
LocalDate date = LocalDate.of(2020, 10, 1);
LocalDateTime ldt = date.atStartOfDay();
OffsetDateTime odt = ldt.atOffset(ZoneOffset.of("-05:00"));
System.out.println(odt);
}
}

输出:

2020-10-01T00:00-05:00
<<p>

在线演示/kbd>您可以使用函数OffsetDateTime#toString获得OffsetDateTimeString表示,例如

String strOdt = odt.toString();
<标题>原始回答
  1. 将您的输入更改为HH:mm格式的时区偏移量,例如-05:00,使其符合ISO 8601标准。
  2. 使用DateTimeFormatterBuilder.parseDefaulting(ChronoField.HOUR_OF_DAY, 0)来默认一天中的小时为0。
  3. 解析给定的字符串为OffsetDateTime,因为它有时区偏移,OffsetDateTime最适合表示带有时区偏移的Date-Time。

演示:

import java.time.OffsetDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeFormatterBuilder;
import java.time.temporal.ChronoField;
import java.util.Locale;
public class Main {
public static void main(String[] args) {
DateTimeFormatter dtf =new DateTimeFormatterBuilder()
.appendPattern("u-M-d[H:m:s]XXX")
.parseDefaulting(ChronoField.HOUR_OF_DAY, 0)
.toFormatter(Locale.ENGLISH);

OffsetDateTime odt = OffsetDateTime.parse("2020-10-01-05:00", dtf);
System.out.println(odt);
}
}

输出:

2020-10-01T00:00-05:00
<<p>

在线演示/kbd>注意方括号内的可选模式。

了解更多关于现代日期时间API*Trail: Date Time.

相关内容

  • 没有找到相关文章

最新更新