【发布时间】:2018-09-13 10:34:34
【问题描述】:
问题来了:
@GetMapping("/main/search")
public String search (@RequestParam String departure,
@RequestParam String arrival,
@RequestParam String departureTime,
Model model) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
departureTime+=" 00:00:00";
LocalDateTime date = LocalDateTime.parse(departureTime, formatter);
List<BusFlight> busflights = busFlightService.search(departure, arrival, date);
格式类似于 2015-10-23T03:34:40
当我尝试以这种方式解决问题时:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss", Locale.US);
departureTime+=" 00:00:00";
LocalDateTime date = LocalDateTime.parse(departureTime, formatter);
String currentDate = date.format(formatter);
List<BusFlight> busflights = busFlightService.search(departure, arrival, currentDate);
我在另一个地方遇到了问题。 Java 需要在我的服务类中将 LocalDateTime 类型更改为 String 类型:
public List<BusFlight> search(String departure, String arrival, **LocalDateTime** departureTime)*
{
*LocalDateTime departureTimeTho = departureTime.**plusDays(1)**;*
如果我将LocalDateTime 更改为String,则无法使用方法plusDays(1) :(((
我也试过这种方式:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss", Locale.US);
departureTime+="T00:00:00";
LocalDateTime date = LocalDateTime.parse(departureTime, formatter);
格式与字符“T”相同2018-09-13T05:42:28
这种方式也不适合我:
String localTime = "2018-09-13 00:00:00";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss", Locale.ENGLISH);
LocalDateTime date = LocalDateTime.parse(localTime, formatter);
String replace = date.toString().replace("T", " ");
因为不能将类型更改为字符串
由于异常,这种方式不起作用:不支持的字段:OffsetSeconds
String localdatetime = "2011-05-01";
localdatetime+="T00:00:00";
DateTimeFormatter date = DateTimeFormatter.ofPattern("yyyy-MM-ddXXX:mm:ss", Locale.US);
LocalDateTime mzt = LocalDateTime.parse(localdatetime);
System.out.println(mzt.format(date));
请帮忙!我该如何解决这个问题?
请检查我的屏幕截图中是否存在无法理解的问题
【问题讨论】:
-
我不明白你的确切问题。尽可能传递
LocalDateTime或其他日期时间类型而不是字符串。你是正确的DateTimeFormatter可以在没有T和LocalDateTime的字符串之间转换(为了解析一个字符串with aT只需使用单参数LocalDateTime.parse并且没有格式化程序)。 -
LocalDateTime中没有T。它的toString方法会生成一个带有T的字符串,你无法避免这种情况。还有你为什么会?为了向用户展示LocalDateTime,您当然应该使用DateTimeFormatter对其进行格式化,例如DateTimeFormatter.ofLocalizedDateTime(FormatSyle.MEDIUM)。 -
我需要 LocalDateTime 来使用方法 plusDays(1) 我无法解析到另一个 DateTime 或者我可以?
-
您的问题已经显示了如何解析为
LocalDateTime并使用plusDays。很抱歉,我看不到您有任何问题。