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.
2.1.6
Any date-time parameter. e.g. http://petstore.swagger.io/#!/store/getOrderById
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
getOrderById No
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.
@Danielku15 thanks for reporting the issue with details and suggesting a few solutions to tackle the problem
From what I read (http://stackoverflow.com/questions/5802461/javascript-which-browsers-support-parsing-of-iso-8601-date-string-with-date-par), seems like the implementation is not consistent across browsers and therefore I prefer moment.js.
May I know if you've cycle to contribute the enhancements?
Ref: https://github.com/swagger-api/swagger-codegen/blob/master/CONTRIBUTING.md
ISO8601 date parsing became part of browsers in ECMAScript version 5. Considering this source and take the Date.prototype.toISOString as indicactor on ISO date parsing support, all browser should support it with normal new Date("str") instead of the T removal which breaks the parsing on most of the browsers.
http://www.ecma-international.org/ecma-262/5.1/#sec-15.9.1.15
http://caniuse.com/#feat=es5
http://kangax.github.io/compat-table/es5/
http://stackoverflow.com/questions/10005374/ecmascript-5-date-parse-results-for-iso-8601-test-cases
@Danielku15 if you feel more comfortable with the new Date("str") solution, please go with that.
@Danielku15 may I know if you're working on this particular issue? Do you need any help from the community?
@Danielku15 If you are not working on this I'd like to go ahead and take a crack at it.
@YetAnotherMinion may I know if you've started working on this? I can show you some good starting points.
I had not started on this (unusual suspect of work) but I have free time now to look at it. Thanks for the reminder.
On Feb 15, 2017, at 9:01 AM, wing328 notifications@github.com wrote:
@YetAnotherMinion may I know if you've started working on this? I can show you some good starting points.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.
@YetAnotherMinion no problem :)
Just let us (the community) know if you need anything from us.
We we just ran into the same issue, as the 'T' removal returns an Invalid Date and breaks Safari 10.0.3 (Mac OSX 10.12.3)
new Date("2017-12-31T00:00:00".replace(/T/i, ' '))
// returns Invalid Date
@eerne a workaround is to modify the template and pass the customized templates via the -t option.
Would you have time to contribute the enhancement using moment.js? If yes, I can work with you on that one.
@ibwhite's suggestion to use date-fns instead: https://github.com/swagger-api/swagger-codegen/pull/5417#issuecomment-296295765
Hi, wondering if there's any news about this issue. I don't really why we should keep the stripping of the "T" character in the date for JS.
@mrdj07 I don't think anyone is working on it. Please feel free to submit a PR with date-fns or other solutions. Let us know if you need any help.
Hi @All,
I've got a very simple fix for this. Someone still need this?
Best,
Hi @ALL,
I've got a very simple fix for this. Someone still need this?Best,
Please do so... i just ran into this issue on Safari. Its most shocking that it has not been fixed after 3 years.
Hi @ALL,
I've got a very simple fix for this. Someone still need this?
Best,Please do so... i just ran into this issue on Safari. Its most shocking that it has not been fixed after 3 years.
Hi,
I created gist`s for you:
Place this file in an directory called "template"
https://gist.github.com/heart4hackers/babbdf0cab93231f465dbd9012b470a7
Here after run this command:
https://gist.github.com/heart4hackers/73f025a741f53a56a120b1fa55c99730
If you have any questions - feel free. Super man ist in place.
Perhaps this is simple minded but is there any reason at this late date to not just do a Date.parse(str) here? That seems to work in recent versions of all the major browsers we have tested, more browsers than I have observed when you strip the T out.
That seems like a win, no?
Most helpful comment
ISO8601 date parsing became part of browsers in ECMAScript version 5. Considering this source and take the Date.prototype.toISOString as indicactor on ISO date parsing support, all browser should support it with normal
new Date("str")instead of theTremoval which breaks the parsing on most of the browsers.http://www.ecma-international.org/ecma-262/5.1/#sec-15.9.1.15
http://caniuse.com/#feat=es5
http://kangax.github.io/compat-table/es5/
http://stackoverflow.com/questions/10005374/ecmascript-5-date-parse-results-for-iso-8601-test-cases