【问题标题】:Java converting string to date format (yyyy-MM-dd) doesn't give the correct resultJava将字符串转换为日期格式(yyyy-MM-dd)没有给出正确的结果
【发布时间】:2020-07-21 10:01:23
【问题描述】:

我正在使用 Spring Boot 和 Hibernate:

@Entity
public class Flight extends AbstractEntity{
    private Date dateOfDeparture;
    private Timestamp estimatedDepartureTime;

我的控制器:(从 jsp.page 获取离开日期的离开日期是文本类型)

      @RequestMapping("findFlights") 
      public String findFlight( @RequestParam("departureDate") String d3, ModelMap  modelMap) { 
          DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); 
          Date d11 = null;
        try {
            d11 = df.parse(d3);
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } 
      
      java.sql.Date dateOfDeparture =  new java.sql.Date(d11.getTime());
       List<Flight> flights =
              flightRepository.findFlightsByDate(dateOfDeparture);
      modelMap.addAttribute("flights", flights); 
      return "displayFlights";

我的仓库:

@Query("from Flight where dateOfDeparture =:dateOfDeparture")
    List<Flight> findFlightsByDate(@Param("dateOfDeparture") Date departureDate);

我没有得到任何结果。dateOfDeparture 的类型是 java.util.Date 还是 java.sql.Date

无法理解问题 感谢您的帮助

【问题讨论】:

  • 你确定 d3 不为空?
  • 我建议你不要使用DateTimestampSimpleDateFormat。所有这些类都设计得很糟糕并且早已过时(后者尤其是出了名的麻烦)。而是使用ZonedDateTimeDateTimeFormatter 和/或来自java.time, the modern Java date and time API 的其他类。
  • 您能正确缩进您的代码吗?您的 IDE 可以为您做到这一点。由于缩进不正确,我误读了您的代码。当误读您的代码时,很难正确地帮助您。

标签: java hibernate date


【解决方案1】:
@Entity
public class Flight extends AbstractEntity{
    private java.sql.Date dateOfDeparture;
    private java.sql.Timestamp estimatedDepartureTime;

考虑到我们有以下实用方法:

@RequestMapping("findFlights")
    public String findFlight( @RequestParam("departureDate") String d3, ModelMap modelMap) {
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        Date d11 = null;
        try {
            d11 = df.parse(d3);
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        java.sql.Date dateOfDeparture = df.format(d11);
        List<Flight> flights =
                flightRepository.findFlightsByDate(dateOfDeparture);
        modelMap.addAttribute("flights", flights);
        return "displayFlights";
    }


    private final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd");
     
    private final SimpleDateFormat DATE_TIME_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
     
    private java.sql.Date parseDate(String date) {
        try {
            return new Date(DATE_FORMAT.parse(date).getTime());
        } catch (ParseException e) {
            throw new IllegalArgumentException(e);
        }
    }
     
    private java.sql.Timestamp parseTimestamp(String timestamp) {
        try {
            return new Timestamp(DATE_TIME_FORMAT.parse(timestamp).getTime());
        } catch (ParseException e) {
            throw new IllegalArgumentException(e);
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-19
    • 1970-01-01
    • 2016-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-24
    相关资源
    最近更新 更多