我正在尝试从我的javascript客户端发送UTC时间戳到休息服务.我无法像"2013-08-30T19:52:28.226Z"使用javascript 那样创建时间戳.
var rawDate = date.getUTCDate().toString();
Run Code Online (Sandbox Code Playgroud)
我看到这个例子但对我没有帮助.UTC-时间stame的JavaScript
我试图了解当客户端和服务器的时区可能不同时,在客户端和服务器上使用 Javascript 创建日期如何影响查询结果。
在客户端,我Date.now()用来保存时间戳信息
var time = Date.now()
console.log(time);
Run Code Online (Sandbox Code Playgroud)
now() 方法以数字形式返回自 1970 年 1 月 1 日 00:00:00 UTC 到现在经过的毫秒数。
我的理解是,这个时间戳与任何时区偏移无关,换句话说,它指向零时区偏移的时间。这是正确的吗?.
我们还可以使用以下代码获取此时间戳
var now = new Date();
time = now.getTime();
console.log(time);
Run Code Online (Sandbox Code Playgroud)
此代码仍然提供相同的时间戳信息(零时区偏移)。Date.now() 只是获取时间戳的快速方法吗?
现在,从Date.now()浏览器的控制台构建日期并将其显示出来。
var time = Date.now()
console.log(time);
var date = new Date(time)
var time = date.getTime()
console.log(time);
console.log(date);
Run Code Online (Sandbox Code Playgroud)
在我看来,只有在浏览器的控制台中显示时,日期才会在浏览器的本地时区中格式化,否则此日期实例仍将时间戳记为零时区偏移量。这是正确的吗?.
我还看到了将 Javascript 日期转换为 UTC的答案
var now = new Date();
var now_utc = new Date(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate(), …Run Code Online (Sandbox Code Playgroud) 我正在寻找在用户当前时区以外的时区中在Web应用程序中显示时间的建议.
我们将日期/时间以UTC/GMT格式存储在数据库中,因此格式化UTC/GMT时间或用户当前时区不是问题.但是,在其他情况下,我们需要从任意时区的角度显示时间(即此页面上的每个日期/时间都在东部,无论用户是否在西海岸,中部,东部,等等.).
在过去,我们已经存储了偏移量或时区信息,然后在.Net中的服务器代码中进行了计算,或者我们已经在javascript中做了一些我希望避免的客户端操作,因为它们都变得非常依赖于javascript和用户的浏览器.我想知道在更客户端/ MVC类型的应用程序中执行此操作的最佳方法.
这是一个例子:
在上面的示例中,很容易获得UTC(#1)或用户当前时区(#2)的时间,但获得#3更加困难.我的选择似乎是:
还有其他选择吗?其他人如何处理类似情况?谢谢.
当我转到浏览器开发工具并在控制台中编写 new Date() 时,它会给出以下内容
Mon Dec 18 2017 17:11:29 GMT+0200
Run Code Online (Sandbox Code Playgroud)
我认为它应该返回 UTC 时间。
问题是我在 AWS 上有一台服务器,它将 UTC 时间写入数据库。它将它写为字符串,在客户端我执行以下操作
const updatedMilliAgo = new Date() - new Date(timeStrFromDb);
Run Code Online (Sandbox Code Playgroud)
由于某种原因,差异甚至是两个小时,因为我在写入服务器后立即检查它。
我在这里做错了什么?
我使用来自http://tarruda.github.io/bootstrap-datetimepicker/的 bootstrap-datetimepicker
这给出了选择当地时间的日期时间的选项,我无法理解的是如何在将它发送到cgi之前将其转换为UTC .我需要这样做,因为我的服务器设置为GMT时区,输入可以来自任何时区.
所以我希望用户在他的tz中选择时间,但将该选择转换为gmt,将其发送到我的cgi脚本.
如果有任何其他更好的方法来解决这个问题,我也会很感激.
<script type="text/javascript">
$('#timetime').datetimepicker({
maskInput: true,
format: 'yyyy-MM-dd hh:mm',
});
</script>
Run Code Online (Sandbox Code Playgroud)
它是在下面的代码中的表单中调用的
<label for="sdate" class="control-label">* Scheduled Date (UTC/GMT)</label>
<div id="timetime" class="controls">
<input id="sdate" name="sdate" type="text" placeholder="YYYY-MM-DD HH:MM"></input>
<span class="add-on">
<i data-time-icon="icon-time" data-date-icon="icon-calendar"></i>
</span>
</div>
Run Code Online (Sandbox Code Playgroud)
最终答案基于电影提供者的帮助
<script type="text/javascript">
$('#timetime').datetimepicker({
maskInput: true,
format: 'yyyy-MM-dd hh:mm',
});
$("form").submit(function(){
// Let's find the input to check
var $input = $(this).find("input[name=sdate]");
if ($input.val()) {
// Value is falsey (i.e. null), lets set a new one, i have inversed this, …Run Code Online (Sandbox Code Playgroud) 我想获取UTC中的Current Date对象,然后使用Mongoose将其存储。
我尝试使用new Date(),Date.now()等等。但是所有这些都返回本地时间。如何获取UTC日期对象?
我想要Date对象,而不是字符串表示形式。
我已经读过这个问题: 你如何将JavaScript日期转换为UTC?
基于此,我在dateTools模块中实现了这个转换,如下所示:
[更新]
var dt, utcTime;
dt = new Date();
utcTime = new Date(Date.UTC(dt.getFullYear(),
dt.getMonth(),
dt.getDate(),
dt.getHours(),
dt.getMinutes(),
dt.getSeconds(),
dt.getMilliseconds()));
Run Code Online (Sandbox Code Playgroud)
现在我想写单元测试.我的想法是检查结果是否实际上是UTC,但我不知道如何.
对于输入(非UTC)和输出(UTC)日期,所有toString,toUTCString和类似方法似乎都是相同的.
只有getTime方法的结果不同.
有没有办法检查javascript中的日期是UTC?如果没有,是否有更好的想法进行单元测试?
提供更多背景信息:
只将它转换为UTC字符串没有用,因为在下一步中,日期将被发送到Asp.net服务,因此转换为如下字符串:
'/Date([time])/'
Run Code Online (Sandbox Code Playgroud)
用这个代码
var aspDate = '/Date(' + date.getTime() + ')/';
Run Code Online (Sandbox Code Playgroud) 我要求用户在我的应用程序中输入日期和时间。用户将根据他们所在的时区输入时间。当我将此日期和时间保存到数据库时,我想将时间转换为 UTC,这样当我按时间查询(以 UTC 完成)时,我可以找到条目。
这就是我目前所做的:
var date = new Date();
var dateString = "0" + (date.getMonth() + 1) + "/" + date.getDate() + "/" + date.getFullYear() + " " + time;
//format date
date = moment(dateString, "MM/DD/YYYY HH:mm a");
date = new Date(date).toISOString();
Run Code Online (Sandbox Code Playgroud)
其中 time 是用户输入的时间(例如,如果我想在上午 11:00 安排某项活动,则时间 = 11:00am)
当它保存到数据库时,它看起来像 :
ISODate("2016-05-09T11:00:00Z")这是不正确的,因为这是保存为祖鲁时间的 EST。
如何将时间(我正在使用时刻)转换为正确的祖鲁时间?
javascript ×8
datetime ×5
.net ×1
asp.net ×1
asp.net-mvc ×1
date ×1
momentjs ×1
node.js ×1
timezone ×1
utc ×1