title: Date as a request parameter in Spring REST
body: <p>My controller looks like this:</p>
  
  <pre><code>@RequestMapping(value = "/process_date", method = RequestMethod.GET)
      public ResponseEntity processDate
         (@RequestParam(value = "time", required = false) 
          @DateTimeFormat(pattern="yyyy-MM-dd'T'HH:mm:ssXXX") Date date){
  // process the date
  }
  </code></pre>
  
  <p>The POSTMAN query:</p>
  
  <pre><code>http://localhost:8080/process_date?date=2014-05-09T00:48:16-04:00
  </code></pre>
  
  <p>It's giving me <code>IllegalArgumentException</code>. The full exception is:</p>
  
  <pre><code>{
    "timestamp": 1495736131978,
    "status": 400,
    "error": "Bad Request",
    "exception": "org.springframework.web.method.annotation.MethodArgumentTypeMismatchException",
    "message": "Failed to convert value of type 'java.lang.String' to required type 'java.util.Date'; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [@org.springframework.web.bind.annotation.RequestParam @org.springframework.format.annotation.DateTimeFormat java.util.Date] for value '2013-05-10T07:48:16-04:00'; nested exception is java.lang.IllegalArgumentException: Illegal pattern component: XXX",
    "path": "/airspaces"
  }
  </code></pre>
  
  <p>Now, strangely when I run:</p>
  
  <pre><code>DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");
  try {
      System.out.println(df.parse("2013-05-10T07:48:16-04:00"));
  } catch (ParseException e) {
      System.out.println("PARSE EXCEPTION!!!");
  }
  </code></pre>
  
  <p>It works without any exception. Same date-format, same date. </p>
  
  <p>One workaround would be to receive the date as a string and then do the conversions through the parser method.</p>
  
  <p>But I'm concerned more about what's going on behind the scene here.</p>