javascript日期对象更改
javascript date object changes
我几天来一直在阅读日期,似乎在这里兜圈子。我在数据库中有一个字符串,看起来像这个
2012,03,13,01,31,38
我想从中创建一个js日期对象,所以…
new Date(2012,03,13,01,31,38);
很简单,对吧?但它以的形式回来了
2012-04-13 05:31:38 +0000
因此,本月1日放假,时间4小时(可能是夏令时或时区相关??)。我只是想要一个与我提供的日期相匹配的日期。处理这些JS日期对象让我抓狂。
我如何才能确保日期对象与字符串显示的日期和时间完全相同,我不需要更改时区或夏令时,只需要一个与字符串匹配的日期。
有关应用程序的更多细节:我的应用程序是为了满足这个需求,我正在Titanium中开发一个iphone应用程序(它使用JS构建)。基本上,我的应用程序的一部分涉及记录数据,我用这些日志收集设备的当前日期和时间。我将所有这些信息保存到mySQL数据库中。数据库中的字段格式如下:"2012-02-16 00:12:32"
这就是我开始遇到问题的地方。我现在提供了编辑日志的功能,包括日志记录的日期和时间。为了使用iPhone"picker",我必须再次将上面的字符串转换为JS日期对象。这通常会把事情搞砸。我基本上需要用上面的日期创建一个新的日期对象,时区和dst完全无关,这样当我保存回DB时,它只是上面的字符串,根据用户的请求进行修改。不管他们是在宾夕法尼亚州还是在中国编辑,他们都在编辑相同的日志日期。
如果这让人感到困惑,我很抱歉。我很难弄清楚整个约会的事情。
这取决于您的字符串是什么。如果该字符串是UTC时间,则需要将其解析为UTC时间。如果是本地时间,则需要将其解析为本地时间。你可以为这个部分制作一个这样的辅助方法:
function getDate(utc, year, month, day, hour, minute, second) {
if(utc) {
var utc = Date.UTC(year, month - 1, day, hour, minute, second);
return new Date(utc);
} else {
return new Date(year, month - 1, day, hour, minute, second);
}
}
现在,要解析字符串,可以使用以下命令:
function fromString(utc, str) {
var parts = str.split(',');
var year = parts[0];
var month = parts[1];
var day = parts[2];
var hour = parts[3];
var minute = parts[4];
var second = parts[5];
return getDate(utc, year, month, day, hour, minute, second);
}
你可以像这样用在你的例子中:
var d = fromString(true, '2012,02,13,00,31,38'); // If UTC
var d = fromString(false, '2012,02,13,00,31,38'); // If local time
这里有一个可以使用的jsFiddle:
- http://jsfiddle.net/rNqXW/
它还显示了打印日期的两种方式(UTC或本地)。希望这能有所帮助。
我也遇到了同样的问题。这种奇怪的时间变化有两个原因:
- 使用
new Date(Date.UTC(2012,03,13,01,31,38))
以避免时间变化 - 请注意,月份为零!此函数的月份从0到11
- 比较从函数和生成的日期对象
- 如何获得一个只有时间的moment.js日期对象
- 使用moment.js获取时间分区的偏移日期对象
- 对象数组返回自最近日期以来的最高总体值
- JavaScript JSON关联对象键和值都作为日期时间戳
- 获取本地时间的JS日期,日期对象中没有时区详细信息
- 将某个时间格式转换为日期对象
- date对象未在javascript中返回正确的日期值
- 正在使用日期字符串初始化javascript日期对象
- 在CouchDB Map函数中发出日期时-对日期对象调用的内容
- 如何将事件的日期放入fullcalendar中的日期对象中
- 为什么在JavaScript中可以从另一个日期对象中减去日期对象
- 理解日期对象接收参数时的getDay()方法
- JS日期对象setUTCMonth()将月份增加2
- 时间-日期对象JavaScript getUTCMilliseconds
- 如何根据创建日期对对象进行排序,以插入Meteor的高图表
- JavaScript日期接收为像这次旅行一样的对象.日期:“/日期(1426530600000)/”;
- 将带有 AM/PM 的日期字符串转换为 javascript 日期对象
- Javascript排序对象日期
- MVC控制器返回JSON对象日期属性"Now"“帮助”