什么是最好的方法来知道它是否是第一次开放的应用程序在一天

本文关键字:第一次 是否是 应用程序 一天 方法 什么 | 更新日期: 2023-09-27 18:17:35

我正在寻找一个示例代码如何知道如果它是第一次,应用程序在一天中打开?我尝试将当前日期保存在.ini文件中,并使用布尔值定义一个名为open的键,然后比较:

DateTime.Now.Substract(*old date from .ini file*).TotalMinutes >= 0 

之后,将.ini文件中的open key设置为true。如何实现它?有更简单的方法吗?

我需要知道它,因为在第一次打开应用程序时,我会更新数据库中的列表。

任何帮助都是感激的。

什么是最好的方法来知道它是否是第一次开放的应用程序在一天

应用程序设置中的每个用户将是我选择的位置。

"Best"是一个移动的目标。对于一个应用程序,一种方法可能是最好的,但另一个应用程序可能需要完全不同的方法。

也就是说,您需要涵盖几个概念:

    一些地方记住"最后打开"的时间。
  1. 一些代码来检查时间,更新它,并做一天一次的工作。
从你的问题来看,只要你知道第一条应该是什么,第二条就很简单了。所以,下面是#1的一些潜在选项。
  1. 数据库(在与用户id之类的东西绑定的表中)
  2. Ini文件(如您所提到的)
  3. xml文件(甚至可能在app.config中)

请参阅我对您的问题的评论,关于您是否在单个工作站/多用户等上跟踪-这将决定您存储日期时间的位置(在数据库中,在机器级范围内,在用户级范围内等)。

至于你要存储什么,如果你是一个多用户应用程序(甚至是移动设备,比如手机或笔记本电脑),不要忘记考虑时区。就此而言,不要忘记考虑日光节约时间。(这些时间的变化可能会让你认为一天已经过去了,而实际上并没有,反之亦然)。

我建议你总是用UTC存储时间,并且总是用UTC进行比较:

<>之前 // save the start time: var startTime = DateTime.UtcNow; (save the start time) ... // comparing the times: // also, are you worried about doing the check once per 24 hours, or do you want to go by calendar date? // you already have code that does a once per 24hr check, so I will show code that goes by calendar days if(startTime.Date < DateTime.UtcNow.Date) // hasn't run today else // has run today