date对象在使用D3.time.format进行解析时返回不同的日期
date object returns different date when parsing using D3.time.format
var startDate = new Date('2013-05-13');
var date_format = d3.time.format("%m/%d");
如果我这样做
startDate = date_format(startDate);
我得到"05/12"而不是"05/13"。有人知道为什么会这样吗?
不要使用Date(string)构造函数来解析日期;它因浏览器而异。"2013-05-13"最可能(但不能保证)的解释是作为UTC时间的ISO8601字符串。因此,如果在JavaScript控制台中运行语句,您将看到:
> new Date("2013-05-13")
Sun May 12 2013 17:00:00 GMT-0700 (PDT)
该字符串由Date构造解释为UTC时间,而返回的Date对象是本地时间。UTC时间5月13日午夜是PDT时间5月12日下午5点,所以当你使用d3.time将其格式化为当地时间时。格式,你得到5月12日。
您可以切换到使用d3.time.format.utc("%m/%d")
来格式化您的日期,但这样您仍然依赖于date (string)构造函数的模糊行为。所以,与其…
正如@minikomi所建议的,您可以创建d3.time。格式解析日期字符串:d3.time.format("%Y-%m-%d")
,然后是format.parse("2013-05-13")
。或者您可以使用多参数Date构造函数:new Date(2013, 4, 13)
,但是注意月份从0开始,而不是通常的0。
使用d3.time可能会得到更一致的结果。格式化以解析字符串:
var startDate = '2013-05-13';
var parser = d3.time.format("%Y-%m-%d");
var formatter = d3.time.format("%m/%d");
var startDateString = formatter(parser.parse(startDate));
相关文章:
- "日期“;AJAX请求返回的类型值未定义
- 将客户端特定的日期格式返回到服务器MVC4
- JQuery UI日期选择器:在选择出发日期时自动弹出返回日期
- 它将返回什么新日期(DateObject)
- 对象数组返回自最近日期以来的最高总体值
- 从Parse.com返回的格式化日期
- PHP strtotime()为JavaScript日期字符串返回false
- date对象未在javascript中返回正确的日期值
- 下周末'javascript中的s datetime返回无效日期
- 返回日期的外部 JavaScript
- 本地日期转换为 UTC 纪元时间并在 JavaScript 中返回日期时不匹配
- 如何使用 JQuery DatePicker 以 YYYYMMDD 格式返回日期
- 从使用时间字符串创建的momentjs对象返回日期对象或字符串
- 返回日期/时间函数中的日期和月份名称
- 为什么我的对象不返回日期?
- javascript new Date(timestamp)是否根据客户端的时区返回日期?
- 使用Javascript解析并返回日期的组件
- JSONArray返回日期作为对象
- 当我试图从输入字段返回日期值时,我得到了未定义
- 日期时间选取器以日期时间格式而不是时间戳的形式返回日期