Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法在LocalDateTime中删除“t”_Java_Spring_Date - Fatal编程技术网

Java 无法在LocalDateTime中删除“t”

Java 无法在LocalDateTime中删除“t”,java,spring,date,Java,Spring,Date,问题是: @GetMapping("/main/search") public String search (@RequestParam String departure, @RequestParam String arrival, @RequestParam String departureTime, Model model

问题是:

    @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);
如果我将LocalDateTime更改为String,则无法使用方法plusDays1:

我也试过这样做:

        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);
        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,这种方法不起作用

请帮忙!我怎样才能解决这个问题

请检查我的屏幕截图,看是否存在未解决的问题

只需删除作为参数传递的T字符

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd**'T'**HH:mm:ss", Locale.US);

要获得更多帮助,您可以通过此链接获取帮助

据我所知,您已经以自己的方式解决了问题

我建议:

请求搜索方法时,可以使用另一个参数。另一个参数是DateTimeFormatter formatter,因此您可以按照自己的方式:

LocalDateTime departureTimeTho = departureTime.plusDays(1);
String date = departureTimeTho.format(formatter)
LocalDateTime中没有T。日期时间对象没有“格式”

另一方面,根据表示日期时间值的文本标准,其toString方法总是生成一个包含T的字符串。您无法更改toString方法及其行为

避免获取T的方法是避免直接或间接调用toString方法。这也意味着:不要打印LocalDateTime对象,也不要在字符串连接中使用它

到目前为止,你所发布的代码中提到的事实并没有坏处,所以我建议你学会生活

编辑:如果我正确地从您的注释中读取了链接到的前两个屏幕截图,则它们显示调试器显示了带有T的LocalDateTime对象。调试器也会调用LocalDateTime.toString。我无法阻止我的调试器这样做,从而显示T,所以我也不希望在您的调试器中有T。你打错了问题。我建议你停止那样做,学会接受它

您应该将LocalDateTime作为最后一个参数传递给busFlightService,这是正确的。如果出发和到达也是日期和/或时间,我建议您也为它们使用适当的日期/时间类型,而不是字符串。这样你就可以使用plusDays里面的方法和类似的优点了

如果在某个时候需要向用户显示LocalDateTime,则用户不希望看到T是正确的。您可以使用DateTimeFormatter生成任何格式的文本。该类甚至可以本地化生成的文本以表示LocalDateTime对象

输出:

23аа。2015Γ,3:34:40

现在除了θimk_中的τ,没有T。。在程序内部,始终使用LocalDateTime或其他适当的日期时间类。仅在演示时使用字符串

这种分离在计算中被广泛使用和推荐:一边是模型和业务逻辑,另一边是用户界面和表示

PS:另一方面,如果您以字符串形式接收出发时间,如2015-10-23 yyyy MM dd,则无需修改该字符串即可将其转换为LocalDateTime。请改用LocalDate,或按如下方式转换:

    String departureTime = "2015-10-23";
    LocalDateTime dt = LocalDate.parse(departureTime).atStartOfDay();

我不明白你的确切问题。尽可能传递LocalDateTime或其他日期时间类型,而不是字符串。您认为DateTimeFormatter可以在不带T的字符串和LocalDateTime之间进行转换以解析包含T的字符串是正确的,只需使用一个参数LocalDateTime.parse,而不使用格式设置程序。LocalDateTime中没有T。它的toString方法生成一个包含T的字符串,您无法避免这一点。你为什么要这样做?为了向用户显示LocalDateTime,您当然应该使用DateTimeFormatter格式化它,例如CalizedDateTimeFormatSyle.MEDIUM的DateTimeFormatter.OfLocalDateTimeFormatSyle.MEDIUM。我需要LocalDateTime来使用方法plusDays1,我不能解析为其他日期时间,或者我可以?您的问题已经说明了如何解析为LocalDateTime并使用plusDays。对不起,我看不出你有什么问题。可能是相关的:我仍然没有得到一个明确的答案,我没有理解它;否a无法将类型更改为字符串,因为在我的mySql数据库类型DATETIMEpublic String search@RequestParam String department、@RequestParam String arrival、@RequestParam String departureTime、模型中{LocalDateTime date=LocalDateTime.parsedepartureTime+T00:00:00;DateTimeFormatter formatter=DateTimeFormatter.ofLocalizedDateTimeFormatStyle.MEDIUM.WithLocalLocaleScale.forLanguageTagru;System.out.printlndate.formatter;List busflights=busFlightService.SearchExistence,arrival,date;`date inde buger 2015-10-23T03:34:40“date inde buger 2015-10-23T03:34:40”是的,这是无法避免的。请参阅我的编辑。我无法阅读您的注释中的代码,因为注释不允许代码格式和缩进。
LocalDateTime departureTimeTho = departureTime.plusDays(1);
String date = departureTimeTho.format(formatter)
    LocalDateTime dt = LocalDateTime.parse("2015-10-23T03:34:40");
    DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM)
            .withLocale(Locale.forLanguageTag("ru"));
    System.out.println(dt.format(formatter));
    String departureTime = "2015-10-23";
    LocalDateTime dt = LocalDate.parse(departureTime).atStartOfDay();