如何查找 iso 8601 时间是否在一个小时范围内?
How can I find if a iso 8601 time is within an hour range?
我正在制作一个 javascript 日历,我正在尝试查找 iso 8601
字符串是否在一个小时范围内,但运气不佳。我有一系列约会。每个约会都有一个开始时间,它是一个 iso 8601
字符串。然后我尝试使用 moment
来比较字符串是否在特定的小时范围内。小时只是传入的 int
,即 1, 2, 3, 4, ...
。这是我的代码:
function(appts, hour) {
var current = appts.forEach(function(appt) {
return moment(appt.startTime).isBetween(hour, hour + 1, 'hour');
});
return current;
}
我并不执着于使用时刻。完成这个任务的方法是什么?
将日期字符串转换为 JavaScript 个对象,然后进行比较。
var dateRangeStart = new Date('2015-01-29T12:00:00');
var dateRangeEnd = new Date('2015-01-29T13:00:00');
var testDate = new Date('2015-01-29T12:30:00');
snippet.log("Range start: " + dateRangeStart.toISOString());
snippet.log("Range end: " + dateRangeEnd.toISOString());
snippet.log("Test date: " + testDate.toISOString());
if(dateRangeStart < testDate && testDate < dateRangeEnd){
snippet.log('Test date IS in range');
} else {
snippet.log('Test date is NOT in range');
}
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
如果 hour
是您指定的数字,那么您只需将 .hour()
与您的目标时间进行比较:
function(appts, hour) {
var current = appts.forEach(function(appt) {
return moment(appt.startTime).hour() == hour;
});
return current;
}
...假设您的 hour
从午夜 0
开始,一直持续到 23
11 p.m,并假设您的 hour
和日期时间字符串在同一时区。如果不是,则您必须针对时区差异调整一个或另一个。如果您的 hour
使用的是 UTC,您只需在 Moment 实例上调用 utc
即可轻松实现:
function(appts, hour) {
var current = appts.forEach(function(appt) {
return moment(appt.startTime).utc().hour() == hour;
// Change -------------------^^^^^^
});
return current;
}
我正在制作一个 javascript 日历,我正在尝试查找 iso 8601
字符串是否在一个小时范围内,但运气不佳。我有一系列约会。每个约会都有一个开始时间,它是一个 iso 8601
字符串。然后我尝试使用 moment
来比较字符串是否在特定的小时范围内。小时只是传入的 int
,即 1, 2, 3, 4, ...
。这是我的代码:
function(appts, hour) {
var current = appts.forEach(function(appt) {
return moment(appt.startTime).isBetween(hour, hour + 1, 'hour');
});
return current;
}
我并不执着于使用时刻。完成这个任务的方法是什么?
将日期字符串转换为 JavaScript 个对象,然后进行比较。
var dateRangeStart = new Date('2015-01-29T12:00:00');
var dateRangeEnd = new Date('2015-01-29T13:00:00');
var testDate = new Date('2015-01-29T12:30:00');
snippet.log("Range start: " + dateRangeStart.toISOString());
snippet.log("Range end: " + dateRangeEnd.toISOString());
snippet.log("Test date: " + testDate.toISOString());
if(dateRangeStart < testDate && testDate < dateRangeEnd){
snippet.log('Test date IS in range');
} else {
snippet.log('Test date is NOT in range');
}
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
如果 hour
是您指定的数字,那么您只需将 .hour()
与您的目标时间进行比较:
function(appts, hour) {
var current = appts.forEach(function(appt) {
return moment(appt.startTime).hour() == hour;
});
return current;
}
...假设您的 hour
从午夜 0
开始,一直持续到 23
11 p.m,并假设您的 hour
和日期时间字符串在同一时区。如果不是,则您必须针对时区差异调整一个或另一个。如果您的 hour
使用的是 UTC,您只需在 Moment 实例上调用 utc
即可轻松实现:
function(appts, hour) {
var current = appts.forEach(function(appt) {
return moment(appt.startTime).utc().hour() == hour;
// Change -------------------^^^^^^
});
return current;
}