javascript - 日期格式错误

标签 javascript jquery morris.js

我正在使用 Morris.js 显示折线图,并为其提供时间戳作为 X 轴值。
作为一个例子比任何解释都更好,这里是一个示例数据:

{   
"1415376000":
    {"VALUE1":0,"VALUE2":0,"VALUE3":16,"VALUE4":0},
"1415980800":
    {"VALUE1":0,"VALUE2":0,"VALUE3":2,"VALUE4":0},
"1416585600":
    {"VALUE1":0,"VALUE2":0,"VALUE3":2,"VALUE4":0},
"1417190400":
    {"VALUE1":0,"VALUE2":0,"VALUE3":7,"VALUE4":0},
"1417795200":
    {"VALUE1":10,"VALUE2":6,"VALUE3":16,"VALUE4":3},
"1418400000":
    {"VALUE1":5,"VALUE2":4,"VALUE3":67,"VALUE4":5},
"1419004800":
    {"VALUE1":3,"VALUE2":0,"VALUE3":38,"VALUE4":3},
"1419609600":
    {"VALUE1":4,"VALUE2":1,"VALUE3":24,"VALUE4":1}
}

如您所见,“1419609600”这样的数据是 Unix 时间戳(通过 php mktime() function 创建)。两个时间戳之间的时间是动态生成的,这里是一周(604800 秒)。

经过简单的 Morris.Line() 初始化后,结果如下:result

日期格式很奇怪,并且转换得很差:使用 mktime() 生成的实际日期是 2014 年 11 月至 12 月...

添加dateFormat后: function (x) { return new Date(x * 1000).toString(); } (而不是默认的 dateFormat: function (x) { return new Date(x).toString(); })初始化时的参数,将此秒时间戳转换为毫秒时间戳,结果比我们预期的更接近:

result2

但是,如何将此日期显示为“2014 年 12 月 5 日至 12 日”?我尝试使用 xLabels 参数、dateFormat 参数,但这要么不会改变任何内容,要么会引发错误。

作为一个附带问题,由于我的时间戳有一个动态范围(时间戳最小值和时间戳最大值之间的差异可以是一天、一个月、一年......),Morris.js 有没有办法采取考虑到这一点并动态适应该范围,显示天或月,...? 根据我对文档的理解,这应该是可能的,但我可能是错的......

非常感谢。

最佳答案

dateFormat: function (x) { 
var d = new Date(x * 1000);
var monthNames = [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ];
return d.getDate()+' '+monthNames[d.getMonth()]+' '+d.getFullYear();
}

尝试一下,

about javascript methods

getDate() - http://www.w3schools.com/jsref/jsref_getdate.asp

getMonth() - http://www.w3schools.com/jsref/jsref_getmonth.asp

getFullYear() - http://www.w3schools.com/jsref/jsref_getfullyear.asp

关于javascript - 日期格式错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27619883/

相关文章:

javascript - Morris Js 和 Codeigniter 从 Controller 传递数据

javascript - 将大数组排序为更简单的数组

jquery - <a href ="xyz.php"> 的目标到 php 页面上的特定 div,而不重定向 php 页面

javascript - 将事件绑定(bind)到 div 但 'not' 内部 div

javascript - 在事件选项卡中加载 Morris.js 图表( Bootstrap )

javascript - 无法读取未定义的 asp MVC Morris Chart 的属性 'match'

javascript - AngularJS 保存后数据不一致

javascript - 如何根据数据属性加载文件?

javascript - 验证码在 ie7 中显示未定义?

javascript - 在客户端 Node.js 中包含 JQuery