date - 我如何判断DateTime.Now()是否在其他DateTime之后的一天

标签 date datetime flutter dart

我正在奔波运行,但我想这可能是一个更普遍的问题。

我在首选项中保存了一个DateTime。我希望能够在上至少最后一次保存的DateTime之后的第二天,告诉DateTime.now()是否在上。

(pseudocode)
lastDailyCheck = 2020.04.10
now = 2020.04.11

=>现在是lastDailyCheck之后的一天。

即使在新的一天是00:01,即使lastDailyCheck是在前一天的23:58,这也应该已经可以工作,这意味着两个DateTime之间的差可以低至分钟。

原来,这真的很复杂!

这是行不通的:
DateTime.Now().isAfter(lastDailyCheck)
这只会检查现在是否在最后一个之后,也将在第二天和同一天返回true。
DateTime.Now().isAfter(lastDailyCheck) && lastDailyCheck.day != DateTime.Now().day
我以为这很聪明。如果日期不同,并且最后一天是
之后的,则它确实可以识别出是一天后的一天-但后来我意识到当两个月的15日都说完时,它会出错-然后lastDailyCheck.day将等于DateTime.Now().day

您认为这里有什么可能?

最佳答案

我不知道 flutter 打,但我的方法是不存储上一张支票,而是存储下一张应发生的日期。因此,当您执行检查时,您将计算下一个午夜并将其存储。现在您可以使用isAfter。

在javascript中,它看起来像这样:

const now = new Date();

//this also handles overflow into the next month
const nextCheck = new Date(now.getYear(), now.getMonth(), now.getDate() + 1)

//store nextCheck somewhere

//in js there is no isAfter, you just use >
if(new Date() > nextCheck) {
   //do the thing
}

当然,您也可以在每次比较时都计算nextCheck,但是如果可以避免,我不希望一遍又一遍地执行相同的计算。

这里要提到的是时区,具体取决于您的日期库,并且如果系统和用户时区对齐,则可能需要更改日期。

关于date - 我如何判断DateTime.Now()是否在其他DateTime之后的一天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61266922/

相关文章:

c# - 在 wpf 中使用日期选择器的日期差异

flutter - 如何在没有 firebase 或一个信号的情况下用 flutter 从后端推送通知?

javascript - ECMAScript 5.1 规范不正确?日期构造函数日期/时间格式解析为 UTC

python - 如何根据python中的另一个变量计算非零出现次数?

postgresql - JSONb 日期 : actual dates internally?

python - 将多个日期时间数据帧行分组为单个行

android - 已完成,错误为 : Gradle task assembleRelease failed with exit code 1

ios - 从 Flutter/IntelliJ 编辑器为 iOS 应用程序编译错误?

codeigniter - 选择今天的日期不起作用的查询

c - 确定一周从哪一天开始