= array(); } $post['classname'] = 'post'; } function comment_format(&$post) { global $conf, $uid, $gid, $forumlist; if (empty($post)) return; $forum = $post['fid'] ? forum_read($post['fid']) : ''; $thread = well_thread_read_cache($post['tid']); if ($thread) { //$post['fid'] = $thread['fid']; $post['closed'] = $thread['closed']; $post['subject'] = $thread['subject']; $post['url'] = $thread['url']; } else { $post['closed'] = 0; $post['subject'] = lang('thread_not_exists'); $post['url'] = ''; } $post['create_date_fmt'] = humandate($post['create_date']); //$post['message'] = stripslashes(htmlspecialchars_decode($post['message'])); $user = user_read_cache($post['uid']); $post['username'] = array_value($user, 'username'); $post['user_avatar_url'] = array_value($user, 'avatar_url'); $post['user'] = $user ? user_safe_info($user) : user_guest(); isset($post['floor']) || $post['floor'] = 0; // 权限判断 $post['allowupdate'] = 2 == array_value($forum, 'comment', 0) && ($uid == $post['uid'] || forum_access_mod($post['fid'], $gid, 'allowupdate')); $post['allowdelete'] = group_access($gid, 'allowuserdelete') && $uid == $post['uid'] || forum_access_mod($post['fid'], $gid, 'allowdelete'); $post['user_url'] = url('user-' . $post['uid'] . ($post['uid'] ? '' : '-' . $post['pid'])); if ($post['files'] > 0) { list($attachlist, $imagelist, $filelist) = well_attach_find_by_pid($post['pid']); // 使用图床 评论使用图床,mysql会过多,写死链接到内容是减轻mysql的过多的方法 if (2 == $conf['attach_on']) { foreach ($imagelist as $key => $attach) { $url = $conf['upload_url'] . 'website_attach/' . $attach['filename']; // 替换成图床 $post['message'] = FALSE !== strpos($post['message'], $url) && $attach['image_url'] ? str_replace($url, $attach['image_url'], $post['message']) : $post['message']; } } $post['filelist'] = $filelist; } else { $post['filelist'] = array(); } $post['classname'] = 'post'; } function comment_format_message(&$val) { global $conf; if (empty($val)) return; // 使用云储存 if (1 == $conf['attach_on'] && 1 == $val['attach_on']) { $val['message'] = str_replace('="upload/', '="' . file_path($val['attach_on']), $val['message']); } elseif (2 == $conf['attach_on'] && 2 == $val['attach_on']) { // 使用图床 list($attachlist, $imagelist, $filelist) = well_attach_find_by_tid($val['tid']); foreach ($imagelist as $key => $attach) { $url = $conf['upload_url'] . 'website_attach/' . $attach['filename']; // 替换成图床 $val['message'] = FALSE !== strpos($val['message'], $url) && $attach['image_url'] ? str_replace($url, $attach['image_url'], $val['message']) : $val['message']; } } else { $val['message'] = str_replace('="upload/', '="' . file_path($val['attach_on']), $val['message']); } //$val['message'] = stripslashes(htmlspecialchars_decode($val['message'])); } // 把内容中使用了云储存的附件链接替换掉 function comment_message_replace_url($pid, $message) { global $conf; if (0 == $conf['attach_on']) { $message = FALSE !== strpos($message, '="../upload/') ? str_replace('="../upload/', '="upload/', $message) : $message; $message = FALSE !== strpos($message, '="/upload/') ? str_replace('="/upload/', '="upload/', $message) : $message; } elseif (1 == $conf['attach_on']) { // 使用云储存 $message = str_replace('="' . $conf['cloud_url'] . 'upload/', '="upload/', $message); } elseif (2 == $conf['attach_on']) { // 使用图床 评论使用图床,mysql会过多,写死链接到内容是减轻mysql的过多的方法 list($attachlist, $imagelist, $filelist) = well_attach_find_by_pid($pid); foreach ($imagelist as $key => $attach) { $url = $conf['upload_url'] . 'website_attach/' . $attach['filename']; // 替换回相对链接 $message = $attach['image_url'] && FALSE !== strpos($message, $attach['image_url']) ? str_replace($attach['image_url'], $url, $message) : $message; } } return $message; } function comment_filter($val) { unset($val['userip']); return $val; } function comment_highlight_keyword($str, $k) { $r = str_ireplace($k, '' . $k . '', $str); return $r; } // //
function comment_message_format(&$s) { if (xn_strlen($s) < 100) return; $s = preg_replace('#.*?
#is', '', $s); $s = str_ireplace(array('
', '
', '
', '

', '', '', '', '' . ''), "\r\n", $s); $s = str_ireplace(array(' '), " ", $s); $s = strip_tags($s); $s = preg_replace('#[\r\n]+#', "\n", $s); $s = xn_substr(trim($s), 0, 100); $s = str_replace("\n", '
', $s); } // 对内容进行引用 function comment_quote($quotepid) { $quotepost = comment_read($quotepid); if (empty($quotepost)) return ''; $uid = $quotepost['uid']; $s = $quotepost['message']; $s = comment_brief($s, 100); $userhref = url('user-' . $uid); $user = user_read_cache($uid); $r = '
' . $user['username'] . ' ' . $s . '
'; return $r; } // 获取内容的简介 0: html, 1: txt; 2: markdown; 3: ubb function comment_brief($s, $len = 100) { $s = strip_tags($s); $s = htmlspecialchars($s); $more = xn_strlen($s) > $len ? ' ... ' : ''; $s = xn_substr($s, 0, $len) . $more; return $s; } ?>jquery - JavaScript new Date() Returning NaN in IE, Safari - Stack Overflow
最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

jquery - JavaScript new Date() Returning NaN in IE, Safari - Stack Overflow

programmeradmin11浏览0评论

I am using highcharts to draw charts and parsing the date with new Date() function. In Chrome and FF, date is parsing fine.

But in IE and Safari, i am getting NaN and Invalid date format resp.

Below is the data i am getting from backend in (element.x) array

2016, 04,05
2016, 04,06
2016, 04,07
2016, 04,08
2016, 04,09
2016, 04,10

Now, i am converting it to Date object in JavaScript as below:

//Loop starts
var xAxis = new Date(element.x);
datas.push([Date.UTC(xAxis.getUTCFullYear(),xAxis.getUTCMonth(), xAxis.getUTCDate())]);
//Loop ends

Now, this operation returns NaN in IE but works very well in chrome as below:

Chrome

Array([0]=>140004454) - Unix Time stamp i get

IE

Array([0]=>NaN)

I am using highcharts to draw charts and parsing the date with new Date() function. In Chrome and FF, date is parsing fine.

But in IE and Safari, i am getting NaN and Invalid date format resp.

Below is the data i am getting from backend in (element.x) array

2016, 04,05
2016, 04,06
2016, 04,07
2016, 04,08
2016, 04,09
2016, 04,10

Now, i am converting it to Date object in JavaScript as below:

//Loop starts
var xAxis = new Date(element.x);
datas.push([Date.UTC(xAxis.getUTCFullYear(),xAxis.getUTCMonth(), xAxis.getUTCDate())]);
//Loop ends

Now, this operation returns NaN in IE but works very well in chrome as below:

Chrome

Array([0]=>140004454) - Unix Time stamp i get

IE

Array([0]=>NaN)
Share Improve this question asked May 3, 2016 at 10:35 GagsGags 3,8398 gold badges53 silver badges101 bronze badges 6
  • 1 Once you correctly parse the string, if you want an array of the time values, simply do datas.push(+xAxis), which will coerce the Date to a number, returning its time value. Or use xAxis.getTime() if you want something clearer. – RobG Commented May 3, 2016 at 22:42
  • But the problem was with new Date() function. It was not parsing date correctly. – Gags Commented May 4, 2016 at 1:39
  • Hence why it's a ment, not an answer—I'd already given John a +1. :-) Just thought I'd save you a heap of typing and unnecessarily calling Date.UTC. – RobG Commented May 4, 2016 at 1:56
  • and yes,,, This also worked.. doind +xAxis after correct parsing.. Awesome :) – Gags Commented May 4, 2016 at 4:09
  • 1 Per the the first ment. +xAxis is less to type but perhaps xAxis.getTime() is better for maintenance as it's explicit. Your choice. ;-) – RobG Commented May 4, 2016 at 5:44
 |  Show 1 more ment

1 Answer 1

Reset to default 5

The way new Date(dateString) parses dateString varies for different browsers, with some browsers being more flexible than others.

The safest way to create your date, is to...

  1. split up your element.x into its ponents
  2. convert those ponents to integer values
  3. create a new date using the syntax new Date(year, month, day)

So, instead of ...

var xAxis = new Date(element.x);

... create your date like this :

var xvals = element.x.split(',');
var xAxis = new Date(
    parseInt(xvals[0]),
    parseInt(xvals[1]) - 1,
    parseInt(xvals[2])
);

That should work in all browsers!

发布评论

评论列表(0)

  1. 暂无评论