swagger-api/swagger-codegen

[JavaScript] Invalid date parsing for all browsers.

Open

#3069 aperta il 7 giu 2016

Vedi su GitHub
 (18 commenti) (2 reazioni) (0 assegnatari)HTML (5474 fork)batch import
Client: JavaScript/Node.jsIssue: Bughelp wanted

Metriche repository

Star
 (12.701 star)
Metriche merge PR
 (Nessuna PR mergiata in 30 g)

Descrizione

Description

We are using the JavaScript code generator in combination with browserify. It brings us some benefits to have some "static code"-generation for JavaScript. The problem is that the date parsing function is not working for all browsers. Not all browsers have proper ISO-8601 parsing capabilities. Only Chrome parses the dates correctly.

https://github.com/swagger-api/swagger-codegen/blob/8f258b9a485076333c2dcf358675ed113ecdb906/modules/swagger-codegen/src/main/resources/Javascript/ApiClient.mustache#L413

Swagger-codegen version

2.1.6

Swagger declaration file content or url

Any date-time parameter. e.g. http://petstore.swagger.io/#!/store/getOrderById

Command line used for generation
java -jar swagger-codegen.jar generate -i http://petstore.swagger.io/v2/swagger.json -l JavaScript - o jsclient 
cd jsclient
npm install
cd ..
browserify jsclient\src\index.js -o client.js --standalone PetStoreClient

https://github.com/swagger-api/swagger-codegen/blob/8f258b9a485076333c2dcf358675ed113ecdb906/samples/client/petstore/javascript/src/ApiClient.js#L397

Steps to reproduce
  1. Generate the client
  2. Use the client.js in the browser to make a call to getOrderById
  3. Inspect the shipDate
Related issues

No

Suggest a Fix

One solution could be to use moment.js to parse the date. An other solution might be to parse the ISO date manually with some regex. https://www.safaribooksonline.com/library/view/javascript-cookbook/9781449390211/ch03s05.html

Considering only IE9 and higher all browsers support out of the box ISO8601 parsing. This means even new Date(str) would work.

Guida contributor