Twitter returns the "created_time" as something like this: Thu May 01 13:57:04 +0000 2014, which is shown as "Invalid Date" in IE.
//created_time = Thu May 01 13:57:04 +0000 2014 var date = new Date( jsonData.created_time ); console.log( date.toString() ); // = IE 9 & 10: 'Invalid Date' // = Chrome: 'Mon May 05 2014 14:50:00 GMT-0400 (Eastern Daylight Time)' // = FireFox: 'Mon May 05 2014 14:50:00 GMT-0400 (Eastern Standard Time)' // = Safari: 'Mon May 05 2014 14:50:00 GMT-0400 (Eastern Daylight Time)'
For Facebook, the 'created_time' value is something like: 2014-04-17T12:59:04+0000, which is shown as "Invalid Date" in IE and Safari.
//created_time = 2014-04-17T12:59:04+0000 var date = new Date( jsonData.created_time ); console.log( date.toString() ); // = IE 9 & 10: 'Invalid Date' // = Chrome: 'Thu Apr 17 2014 08:59:04 GMT-0400 (Eastern Daylight Time)' // = FireFox: 'Thu Apr 17 2014 08:59:04 GMT-0400 (Eastern Standard Time)' // = Safari: 'Invalid Date'
So, what fixed the problem, for now, was to do a little manipulation on the date string before it is passed it to the Date() constructor.
//twitter = 'Thu May 01 13:57:04 +0000 2014' //facebook = '2014-04-17T12:59:04+0000' var created = facebook.created_time; if( isFacebook ) { //this fixes the issue in IE and Safari, and still works in Firefox and Chrome even though they don't need it. created = created.replace(/-/g, '/').replace(/T/, ' ').replace(/\+/, ' +'); } else if( isTwitter ) { //this is only an issue in IE, so we can just do a quick test and fix the issue. if( navigator.userAgent.match(/MSIE\s([^;]*)/) ) created = created .replace(/( \+)/, ' UTC$1'); } var date = new Date( created );
No comments:
Post a Comment