swagger-api/swagger-codegen

[JavaScript] Invalid date parsing for all browsers.

Open

#3.069 geöffnet am 7. Juni 2016

Auf GitHub ansehen
 (18 Kommentare) (2 Reaktionen) (0 zugewiesene Personen)HTML (5.474 Forks)batch import
Client: JavaScript/Node.jsIssue: Bughelp wanted

Repository-Metriken

Stars
 (12.701 Stars)
PR-Merge-Metriken
 (Keine gemergten PRs in 30 T)

Beschreibung

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.

Contributor Guide