我将特定时区的日期时间作为字符串,我想将其转换为本地时间.但是,我不知道如何在Date对象中设置时区.
例如,Feb 28 2013 7:00 PM ET,我可以
var mydate = new Date();
mydate.setFullYear(2013);
mydate.setMonth(02);
mydate.setDate(28);
mydate.setHours(7);
mydate.setMinutes(00);
Run Code Online (Sandbox Code Playgroud)
据我所知,我可以设置UTC时间或本地时间.但是,我如何在另一个时区设置时间?
我试图使用添加/减去UTC的偏移量,但我不知道如何应对夏令时.我不确定我是否正朝着正确的方向前进.
如何在javascript中将时间从不同的时区转换为当地时间?
目标:找到local time并UTC time offset以下列格式构建URL.
示例URL:/ Actions/Sleep?duration = 2002-10-10T12:00:00-05:00
格式基于W3C建议:http: //www.w3.org/TR/xmlschema11-2/#dateTime
文件说:
例如,2002-10-10T12:00:00-05:00(2002年10月10日中午,中央夏令时以及美国东部标准时间)等于2002-10-10T17:00:00Z,比2002-10-10T12:00:00Z晚5个小时.
所以基于我的理解,我需要通过新的Date()找到我的本地时间,然后使用getTimezoneOffset()函数来计算差异,然后将它附加到字符串的末尾.
1.以格式获取当地时间
var local = new Date().format("yyyy-MM-ddThh:mm:ss"); //today (local time)
Run Code Online (Sandbox Code Playgroud)
产量
2013-07-02T09:00:00
Run Code Online (Sandbox Code Playgroud)
2.以小时为单位获取UTC时间偏移量
var offset = local.getTimezoneOffset() / 60;
Run Code Online (Sandbox Code Playgroud)
产量
7
Run Code Online (Sandbox Code Playgroud)
3.Construct URL(仅限时间部分)
var duration = local + "-" + offset + ":00";
Run Code Online (Sandbox Code Playgroud)
输出:
2013-07-02T09:00:00-7:00
Run Code Online (Sandbox Code Playgroud)
以上输出结果表示我的当地时间是2013/07/02 9am,与UTC的差异是7小时(UTC是比当地时间早7小时)
到目前为止它似乎工作,但如果getTimezoneOffset()返回负值如-120怎么办?
我想知道在这种情况下格式应该是什么样的,因为我无法从W3C文档中找到答案.提前致谢.
我正在使用JavaScript Date类并尝试使用getDate()方法获取当前日期.但显然它是加载系统的日期和时间.我正在运行来自印度的代码,但我希望使用相同的方法获取英国的日期和时间.我怎样才能做到这一点 ?
使用jasmine进行测试时,我收到此错误.
TypeError:moment.tz不是函数
我尝试测试的代码是
let myDate = moment().tz(undefined, vm.timeZone).format('YYYY-MM-DD');
Run Code Online (Sandbox Code Playgroud) 我正在使用rails 3.0.5并且我已经在UTC中存储了created_at和updated_at.现在我想在用户的时区中显示created_at时间.我相信可以从浏览器中选择用户的时区,然后将时间转换为用户的时区.
我确信rails会有一个gem /插件来处理这样的事情.有东西吗?
似乎JavaScript的Date()函数只能返回本地日期和时间.无论如何有时间为特定时区,例如GMT-9?
结合@ Esailija和@ D3mon-1stVFW,我想出来了:你需要有两个时区偏移,一个用于本地时间,一个用于目的地时间,这里是工作代码:
var today = new Date();
var localoffset = -(today.getTimezoneOffset()/60);
var destoffset = -4;
var offset = destoffset-localoffset;
var d = new Date( new Date().getTime() + offset * 3600 * 1000)
Run Code Online (Sandbox Code Playgroud)
这里有一个例子:http://jsfiddle.net/BBzyN/3/
我已经在JavaScript中创建了一个工具,该工具可以确定当前UTC时间并检查是否经过了另一个预定日期。
我想将浏览器更改为另一个时区,以查看测试是否仍然可以通过,但是我找不到解决方法。
Chrome开发人员工具中有没有办法做到这一点?如果没有,还有其他建议吗?
javascript jquery google-chrome google-chrome-extension google-chrome-devtools
我的日期如下:
05/30/2014 11:21:37 AM
我的用户将输入该数据并拥有自己的时区.它可能是"美国/东方","美国/太平洋 - 新"等等.我想将时间转换为UTC,但我无法做到.有办法吗?
我正在使用节点,我尝试了momentJS并阅读以下内容:
如何从不同的时区转换为UTC?
编辑
我试过这些:
moment().utc(0).format('YYYY-MM-DD HH:mm Z')
moment.tz(dateString, "US/Eastern").format()
Run Code Online (Sandbox Code Playgroud)
在上面的例子中dateString是字符串日期.我想将时区设置为"US/Eastern"并将其转换为UTC.
我在使用JSON序列化对象在客户端浏览器上显示正确日期时遇到问题.用户可以定义他们想要查看数据的时区.鉴于此,我将UTC日期转换为服务器上用户的时区.然后我想通过JSON将日期/时间(已经转换为定义的时区)序列化到浏览器.
看起来很简单,但是我一直在使用的JSON序列化程序已经严重破坏了我的日期.服务器为UTC,客户端位于Central(-6).即使我将DateTime.Kind指定为Unspecified,也会调整日期(-12小时).
不知何故,.NET知道客户端的浏览器在哪个时区以及服务器处于什么时区,即使我已根据用户的全局设置调整了时间并设置了日期,它也取消了我的日期/时间-6.有点不明确.如何才能让JSON序列化程序不尝试调整日期?
List<ErrorGridModel> models = Mapper.Map<ErrorCollection, List<ErrorGridModel>>(errors);
foreach (ErrorGridModel m in models)
{
//convert UTC dates to user local dateTime - split out date vs. time for grouping & splitting columns
DateTime dtLocal = TimeZoneInfo.ConvertTimeFromUtc(m.ErrorDate, this.AppContext.User.TimeZoneInfo);
m.ErrorDate = new DateTime(dtLocal.Year, dtLocal.Month, dtLocal.Day, 0, 0, 0, DateTimeKind.Unspecified);
m.ErrorTime = new DateTime(1900, 1, 1, dtLocal.Hour, dtLocal.Minute, dtLocal.Second, DateTimeKind.Unspecified);
}
IQueryable<ErrorGridModel> dataSource = models.AsQueryable();
return new ContentResult() { Content = JsonConvert.SerializeObject(dataSource.ToDataSourceResult(request), new JsonSerializerSettings() { DateFormatHandling = DateFormatHandling.MicrosoftDateFormat }), ContentType = "application/json" }; …Run Code Online (Sandbox Code Playgroud) 请考虑以下代码HTML + JavaScript:
<!DOCTYPE html>
<html>
<body>
<p id="demo">Click the button to display a date after changing the hours, minutes, and seconds.</p>
<button onclick="myFunction()">Try it</button>
<script>
function myFunction()
{
var d = new Date();
d.setHours(0,0,0,0);
document.write(d + '<br/>');
document.write('ISO Date '+ d.toISOString() + '<br/>');
//I want it to be 2013-04-17T00:00:00.000Z
}
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
输出:
Thu Apr 18 2013 00:00:00 GMT+0530 (India Standard Time)
ISO Date 2013-04-17T18:30:00.000Z
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮助理解日期和时间的这种差异