首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向JS矩对象添加特定的小时数

问向JS矩对象添加特定的小时数
EN

Stack Overflow用户
提问于 2018-12-29 08:12:23
回答 2查看 96关注 0票数 1

我的应用程序存储一些日期的UTC时间戳。例如,时间戳1541638800表示2018年11月8日星期四凌晨1点。

我需要以某种方式确定一天中用时间戳表示的小时数(在给出的示例中,在一天中的1小时)。然后,我需要将它应用到今天的日期,我将其表示为一个JS时刻,即moment().utc().startOf('day').unix()。

总体要求:

  1. 我如何从世界协调时的时间戳中得到一天的小时数?尝试使用Date对象和getHours(),但是它返回了17,这是不正确的。
  2. 我怎么才能把这些小时加到瞬间对象上呢?

提前感谢!

EN

回答 2

Stack Overflow用户

发布于 2018-12-29 08:28:49

在库中,您需要使用.hours()方法,并且不要忘记像UTC那样解析数据;

代码语言:javascript
复制
moment.utc(data).hours();

简单的JS:

从今天到今天,只要设定零小时

​

代码语言:javascript
复制
let nowDate = new Date();

console.log((nowDate.setMilliseconds(0) - nowDate.setHours(0)) / (1000 * 60 * 60));

​

票数 0
EN

Stack Overflow用户

发布于 2018-12-29 12:21:43

1541638800代表2018年11月8日(星期四)世界协调时凌晨1时。

所以这个时间戳是从世界协调时1970-01-01年的ECMAScript时代开始的。

日期构造函数的数值是从时代开始的毫秒,所以您必须将它乘以1,000。要获取一天中的UTC小时数,请使用getUTCHours。

如果您想将当前一天的世界协调时间设置为相同的值,请使用setUTCHours。

​

代码语言:javascript
复制
var value = 1541638800;
var utcHr = new Date(value * 1e3).getUTCHours();
var d = new Date();
d.setUTCHours(utcHr, 0,0,0);
console.log(d.toISOString());

​

或者使用moment.js:

​

代码语言:javascript
复制
// Create a date using seconds time value
var d = moment.unix(1541638800);
// Set date to use UTC, not local
d.utc();
// Create a date for today
var m = moment();
// Set to UTC
m.utc();
// Set hour to same hours as d, zero minutes, etc.
m.hour(d.hour()).minute(0).second(0).millisecond(0);

console.log(m);
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.23.0/moment.min.js"></script>

​

moment.js有小时和小时、分钟和分钟等方法,这些方法是相同的。

您还可以使用简单的数学计算时间,考虑到ECMAScript UTC一天正好有8.64e4秒:

​

代码语言:javascript
复制
var value = 1541638800
// Round down to UTC hour
var utcHr = (1541638800 % 8.64e4) / 3.6e3 | 0;
var d = new Date();
d.setUTCHours(utcHr, 0,0,0);
console.log(d.toISOString());

​

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53967848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档