JavaScript日期乱码,如何解决

乐百川 2016-04-21 10:30:08
我在页面中用document.write(new Date());这样的输出日期,结果出现了乱码。请问该如何解决?

改成这样的,也会乱码

		<div class="row">
<div class="col-md-12 center-block">
<h2 id="mine">暂时没有东西</h2>
<h3 id="time"></h3>
</div>
</div>
</div>

<script src="static/js/jquery-2.2.2.js"></script>
<script src="static/js/bootstrap.js"></script>
<script>
$(document).ready(function() {
$("#time").html(new Date())
})
</script>

有大神来说说好吗
...全文
742 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
EverWHL 2016-04-25
  • 打赏
  • 举报
回复
引用 12 楼 u011054333 的回复:
我去,昨天我说装个UBUNTU16.04玩玩吧,结果今天把DPKG配置弄坏了,然后重新回来windows发现居然这个问题自动解决了……这到底是为什么,难道其实我电脑上时区出错了,然后ubuntu自动帮我纠正了? Sat Apr 23 2016 16:39:40 GMT+0800 (中国标准时间)
我个人觉得不是UBUNTU的关系把,感觉应该是dpkg的字符编码设置的问题
乐百川 2016-04-23
  • 打赏
  • 举报
回复
我去,昨天我说装个UBUNTU16.04玩玩吧,结果今天把DPKG配置弄坏了,然后重新回来windows发现居然这个问题自动解决了……这到底是为什么,难道其实我电脑上时区出错了,然后ubuntu自动帮我纠正了? Sat Apr 23 2016 16:39:40 GMT+0800 (中国标准时间)
乐百川 2016-04-23
  • 打赏
  • 举报
回复
引用 10 楼 qnmdcsdn 的回复:
引用 9 楼 u011054333 的回复:
[quote=引用 6 楼 qnmdcsdn 的回复:] 如果是这玩意的话,那就是正常的 Fri Apr 22 14:09:09 UTC+0800 2016
我原来也是没乱码,而且我记得好像后面有一串中国标准时间这样的字样,但是现在这里就乱码了,不知道什么情况。难道是我的操作系统区域语言设置崩了?前段时间确实改过语言,难道是留下后遗症了
不太清楚,你可以写个Java的程序试试效果,看是不是操作系统的原因[/quote]怎么试,直接输出new Date的结果吗
  • 打赏
  • 举报
回复
引用 9 楼 u011054333 的回复:
引用 6 楼 qnmdcsdn 的回复:
如果是这玩意的话,那就是正常的 Fri Apr 22 14:09:09 UTC+0800 2016
我原来也是没乱码,而且我记得好像后面有一串中国标准时间这样的字样,但是现在这里就乱码了,不知道什么情况。难道是我的操作系统区域语言设置崩了?前段时间确实改过语言,难道是留下后遗症了
不太清楚,你可以写个Java的程序试试效果,看是不是操作系统的原因
eewcee 2016-04-22
  • 打赏
  • 举报
回复
注意下: $("#time").html(new Date())
new Date() 出来的是一个date对象,不可以直接进行使用;
给你一个日期格式化扩展;
// 对Date的扩展,将 Date 转化为指定格式的String   
// 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符,
// 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
// 例子:
// (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423
// (new Date()).Format("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18
Date.prototype.format = function(fmt)
{ //author: meizz
var o = {
"M+" : this.getMonth()+1, //月份
"d+" : this.getDate(), //日
"H+" : this.getHours(), //小时
"m+" : this.getMinutes(), //分
"s+" : this.getSeconds(), //秒
"q+" : Math.floor((this.getMonth()+3)/3), //季度
"S" : this.getMilliseconds() //毫秒
};
if(/(y+)/.test(fmt))
fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));
for(var k in o)
if(new RegExp("("+ k +")").test(fmt))
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
return fmt;
}


加载以上的代码以后,可以调用

var d = new Date();
var timeStr= d.format("yyyy-MM-dd HH:mm:ss")
$("#time").text(timeStr);

EverWHL 2016-04-22
  • 打赏
  • 举报
回复
把你整个页面贴出来,看看到底是哪里的问题
EverWHL 2016-04-22
  • 打赏
  • 举报
回复
我估计你输出的不是乱码把,而是没有格式话的时间把,你把你输出的样子发上来看下
乐百川 2016-04-22
  • 打赏
  • 举报
回复
引用 1 楼 EverWHL的回复:
你现在页面的编码格式是什么,
应该是utf8,页面上面用page指令设置过
EverWHL 2016-04-22
  • 打赏
  • 举报
回复
你现在页面的编码格式是什么,
乐百川 2016-04-22
  • 打赏
  • 举报
回复
引用 5 楼 eewcee 的回复:
注意下: $("#time").html(new Date()) new Date() 出来的是一个date对象,不可以直接进行使用; 给你一个日期格式化扩展;
// 对Date的扩展,将 Date 转化为指定格式的String   
// 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符,   
// 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字)   
// 例子:   
// (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423   
// (new Date()).Format("yyyy-M-d h:m:s.S")      ==> 2006-7-2 8:9:4.18   
Date.prototype.format = function(fmt)   
{ //author: meizz   
  var o = {   
    "M+" : this.getMonth()+1,                 //月份   
    "d+" : this.getDate(),                    //日   
    "H+" : this.getHours(),                   //小时   
    "m+" : this.getMinutes(),                 //分   
    "s+" : this.getSeconds(),                 //秒   
    "q+" : Math.floor((this.getMonth()+3)/3), //季度   
    "S"  : this.getMilliseconds()             //毫秒   
  };   
  if(/(y+)/.test(fmt))   
    fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));   
  for(var k in o)   
    if(new RegExp("("+ k +")").test(fmt))   
  fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));   
  return fmt;   
} 
加载以上的代码以后,可以调用

var d = new Date();
var timeStr= d.format("yyyy-MM-dd HH:mm:ss")
$("#time").text(timeStr);
不是说遇到字符串的情形会自动调用toString方法吗?不过我现在的问题是不管是不是手动调用toString方法,最后面的(应该是汉字)就会乱码,不知道什么情况。图我已经放上去了,本来想直接把乱码粘贴上去的,结果CSDN还不支持这些乱码……
乐百川 2016-04-22
  • 打赏
  • 举报
回复
引用 6 楼 qnmdcsdn 的回复:
如果是这玩意的话,那就是正常的 Fri Apr 22 14:09:09 UTC+0800 2016
我原来也是没乱码,而且我记得好像后面有一串中国标准时间这样的字样,但是现在这里就乱码了,不知道什么情况。难道是我的操作系统区域语言设置崩了?前段时间确实改过语言,难道是留下后遗症了
乐百川 2016-04-22
  • 打赏
  • 举报
回复
引用 4 楼 EverWHL 的回复:
把你整个页面贴出来,看看到底是哪里的问题
原来我记的好好的,直接用JS的new Date()就会返回一个 Fri Apr 22 14:09:09 UTC+0800 中国标准时间 差不多这样的字符串。现在不管用HBuilder还是Eclipse,新建html还是jsp,后面的汉字(应该是)就乱码了。不过也不全是,所以我现在也挺迷惑的
<!DOCTYPE html>
<html>

<head>
<meta charset="UTF-8">
<title>date</title>
</head>

<body>
<h2><script>document.write(new Date())</script></h2>
<h2><script>document.write(new Date().toString())</script></h2>
<h2><script type="text/javascript">
document.write(new Date().toLocaleTimeString())
</script></h2>
</body>

</html>

  • 打赏
  • 举报
回复
如果是这玩意的话,那就是正常的 Fri Apr 22 14:09:09 UTC+0800 2016

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧