我正在尝试将UTC时间转换为当地时间.我一直在这个链接中关注这个例子:http://jsfiddle.net/FLhpq/4/light/.我似乎无法获得正确的本地输出.例如,如果它在这里上午10:30,而不是得到10:30生病得到15:30.这是我的代码:
var date = moment.utc().format('YYYY-MM-DD HH:mm:ss');
var localTime = moment.utc(date).toDate();
localTime = moment(localTime).format('YYYY-MM-DD HH:mm:ss');
console.log("moment: " + localTime);
Run Code Online (Sandbox Code Playgroud)
无论我做什么,时间总是在UTC时间出现.我住在休斯顿,所以我知道时区是个问题.我已经按照链接中的代码进行了操作,但似乎可以获得当地时间.我究竟做错了什么?
我需要下一个流程:
var a = new Date(1337324400000, 'Europe/Amsterdam'); //+2h
console.log(a); // for example 12:00 Mon ...
a.setTimeZone('Europe/Kiev'); //+3h
console.log(a); // 13:00 Mon ...
Run Code Online (Sandbox Code Playgroud)
在nodejs utils api中是否存在这种可能性?
我只想得到专家的确认.我仍然对我认为在这样的环境中存储和处理日期的正确方法感到自信.
我正在为意大利用户开发一个小应用程序.
基本上,他们可以创建一个条目列表,每个条目都有一个creationDate(我只对日期部分感兴趣,时间在我的场景中没用).
因此,用户在"日期"表单字段中输入以下格式的日期:2014年6月22日代表2014年6月的第22天.然后,日期被解析为:
entryData.dateEntry = moment( $(form).find('input[name=dateEntry]').val(), 'DD-MM-YYYY' ).toDate();
Run Code Online (Sandbox Code Playgroud)
最后,我的入门模型被添加到backbone.js集合中,并通过MongoDB中的Node.js + Express存储在服务器端.
查询Mongo的条目,我看到:
2014-06-21 22:00:00 +0000
对应于"dateEntry":日期(1403388000000).
谷歌搜索,我发现MongoDB没有时区的概念.所有日期都以UTC格式存储,我之前创建的日期对象格式为GMT + 2.但我真的很害怕......我怎么能以简单的方式回到当地时区的约会?
接下来,我将在下划线模板中显示条目数据,这样:
<%= moment(dateEntry).format('DD/MM/YYYY') %>
Run Code Online (Sandbox Code Playgroud)
而且......瞧!我得到了当地的'意大利'日期:22/06/2014.
现在,我的问题是:正确的方法是什么?
过程是:在本地时区解析日期=>存储在utc =>以本地时区检索日期.这是一种常见的做法吗?
我还想:我不能简单地避免使用时区和存储我的本地(意大利)时间,因为它是时间(2014-06-22 00:00:00)?这太糟了吗?
我正在使用momentjs并将日期转换为不同的时区convertedDate = moment().utcOffset(timezone).format().这很好但是它是一个字符串,我需要将它转换为日期对象.
我已经尝试了new Date(convertedDate),moment().utcOffset(timezone).toDate()但是将当前时区作为日期对象返回.如何保留转换后的时区?
要创建 UTC 日期对象,我们可以编写
new Date(Date.UTC(2012,02,30));
Run Code Online (Sandbox Code Playgroud)
如果没有 Date.UTC,它将获取locale并创建Date对象。如果我必须创建一个 Date 对象来CET在世界的某个地方运行程序,我会怎么做?
我正在尝试在应用程序开始时设置时区
set "TZ=UTC"
node main.js
Run Code Online (Sandbox Code Playgroud)
但不是工作:
// main.js
var tz = process.env.TZ;
var date = new Date();
console.log(tz, '||', date);
Run Code Online (Sandbox Code Playgroud)
UTC 时间 2015 年 11 月 17 日星期二 21:41:29 GMT+0300
我有一个函数可以计算给定时间戳解析为用户本地时区的哪个日期 (YYYY-MM-DD)。例如:2019-12-31T23:30:00.000Z解析为2020-01-01on UTC+1,但解析为2019-12-31on UTC-1。
这是我的实现:
function calcLocalYyyyMmDd(dateStr) {
const date = new Date(dateStr);
const year = String(date.getFullYear()).padStart(4, "0");
const month = String(date.getMonth() + 1).padStart(2, "0");
const day = String(date.getDate()).padStart(2, "0");
return `${year}-${month}-${day}`;
}
Run Code Online (Sandbox Code Playgroud)
这按预期工作,但是,我想在单元测试中验证这种行为(使用玩笑,不确定是否相关)。
describe("calcLocalYyyyMmDd", () => {
test("calculates correct date on UTC+1", () => {
// TODO mock local timezone
const result = calcLocalYyyyMmDd("2019-12-31T23:30:00.000Z");
expect(result).toBe("2020-01-01");
});
test("calculates correct date on UTC-1", () => {
// TODO mock local timezone
const result …Run Code Online (Sandbox Code Playgroud) 我正在尝试在我的项目中使用日期。由于日期有 5 小时休息(我住在东部时间,-5),我不断收到奇怪的小变化。
生产环境默认为 UTC,我希望能够在本地主机环境中执行此操作。
我可以使用某种方法express或某些npm软件包在 UTC 中启动服务器吗?这是机器问题吗?
我不想有与生产环境不同的代码。
javascript ×5
node.js ×5
timezone ×4
date ×3
momentjs ×3
backbone.js ×1
datetime ×1
express ×1
mocking ×1
mongodb ×1