javascript - 如何获得正确的日期?
问题描述
任何想法我怎么能在 6 天内制作一个知道日期的系统可以让我根据实际日期显示一些信息。例如:第 1 天:信息第 2 天:信息 2,但我不知道如何让系统知道今天是 5,明天是 6,然后是 1,然后再像这样到 6。不算周日和周六。
问题是今天是第 5 天,但明天将是第 6 天。例如:取决于当天是第 1、2、3、4、5 天还是第 6 天,星期一可以是第 1、2、3、4 天,5 或 6 取决于。我想要一种用日期计算日期的方法。今天 2 月 18 日是第 5 天,那么哪一天是 EX:2 月 26 日?
现在我的代码中有这个,但我被困住了:
//Definiendo Fecha
var hoy = new Date();
var dd = hoy.getDate();
var mm = hoy.getMonth() + 1; //January is 0!
var yyyy = hoy.getFullYear();
if (dd < 10) {
dd = "0" + dd;
}
if (mm < 10) {
mm = "0" + mm;
}
hoy = dd + "/" + mm + "/" + yyyy;
//Fin
document.getElementById("fecha").innerHTML = hoy;
contador = 4
function obtenerDia() {
if (!(hoy = "17/02/2019")) {
contador++
}else {
console.log("Algo pasa.")
}
}
我将非常感谢您的帮助。
上下文:我正在制定一个时间表,因此它应该显示当天的正确时间表 EX: The day 1 ... 5 ,具体取决于哪一天是正确的。
解决方案
对于通用解决方案,请考虑:
function getDayNumber(baseDate, targetDate, daysInCycle) {
var startOfBaseDate = new Date(baseDate).setHours(0, 0, 0, 0);
var startOfTargetDate = new Date(targetDate).setHours(0, 0, 0, 0);
var differenceInDays = Math.round((startOfTargetDate - startOfBaseDate) / 864e5);
return ((differenceInDays % daysInCycle + daysInCycle) % daysInCycle) + 1;
}
- 是与周期的“第 1 天”相对应的
baseDate
任何对象(或时间戳)。Date
targetDate
是Date
您希望为其查找日期编号的对象(或时间戳)。- 是循环重复之前的
daysInCycle
天数,例如6
六天循环。
例子:
getDayNumber(new Date(2019, 1, 18), new Date(2019, 1, 15), 6) //=> 4
getDayNumber(new Date(2019, 1, 18), new Date(2019, 1, 16), 6) //=> 5
getDayNumber(new Date(2019, 1, 18), new Date(2019, 1, 17), 6) //=> 6
getDayNumber(new Date(2019, 1, 18), new Date(2019, 1, 18), 6) //=> 1
getDayNumber(new Date(2019, 1, 18), new Date(2019, 1, 19), 6) //=> 2
getDayNumber(new Date(2019, 1, 18), new Date(2019, 1, 20), 6) //=> 3
getDayNumber(new Date(2019, 1, 18), new Date(2019, 1, 21), 6) //=> 4
getDayNumber(new Date(2019, 1, 18), new Date(2019, 1, 22), 6) //=> 5
getDayNumber(new Date(2019, 1, 18), new Date(2019, 1, 23), 6) //=> 6
getDayNumber(new Date(2019, 1, 18), new Date(2019, 1, 24), 6) //=> 1
getDayNumber(new Date(2019, 1, 18), new Date(2019, 1, 25), 6) //=> 2
getDayNumber(new Date(2019, 1, 18), new Date(2019, 1, 26), 6) //=> 3
对于baseDate
or ,如果您想使用 UTC 日作为基础targetDate
,您可以通过。Date.UTC(2019, 1, 18)
对于targetDate
,您可以传递new Date()
或Date.now()
使用当前时间戳。
另请注意,函数的最后一行使用此处给出的模解决方案,以确保正确处理负数(基准日期之前的日期)。
推荐阅读
- javascript - 如何使用 Javascript 中的正则表达式验证我的密码 - 附加的代码每次都评估为 false
- c++ - 提升进程间向量比 std::vector 慢
- javascript - fetch 返回 ReadableStream 作为错误主体。如何获取该流的内容?
- excel - Python、Selenium、Pandas DataFrame 和 Excel
- google-sheets - 在数组中查找,返回同一行,左侧两列
- php - 从服务器上的文件夹中读取文件
- xcode - Xcode 11 beta 4:SwiftUI 预览和构建阶段 agvtool 不兼容?
- javascript - 如何以反应形式存储布尔值?
- c++ - 相关 C++ 类中多态性的最佳实践?
- c# - 我可以将 Visual Studio 配置为允许调试步骤进入 NuGet 包吗?