swagger-api/swagger-codegen

[JavaScript] Invalid date parsing for all browsers.

Open

#3,069 创建于 2016年6月7日

在 GitHub 查看
 (18 评论) (2 反应) (0 负责人)HTML (5,474 fork)batch import
Client: JavaScript/Node.jsIssue: Bughelp wanted

仓库指标

Star
 (12,701 star)
PR 合并指标
 (30 天内没有已合并 PR)

描述

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.

贡献者指南