C# 如果应用程序是在一天中第一次打开,那么最好的方法是什么?
我正在寻找一个示例代码,如何知道这是应用程序在一天中第一次打开? 我尝试将当前日期保存在.ini文件中,并使用布尔值定义名为open的键,然后比较:C# 如果应用程序是在一天中第一次打开,那么最好的方法是什么?,c#,.net,logic,C#,.net,Logic,我正在寻找一个示例代码,如何知道这是应用程序在一天中第一次打开? 我尝试将当前日期保存在.ini文件中,并使用布尔值定义名为open的键,然后比较: DateTime.Now.Substract(*old date from .ini file*).TotalMinutes >= 0 在此之后,将.ini文件中的openkey设置为true。如何实施?有没有更简单的方法 我需要知道它,因为在应用程序第一次打开时,我会更新数据库中的列表 感谢您的帮助。提前感谢。“最佳”是一个移动的目标。
DateTime.Now.Substract(*old date from .ini file*).TotalMinutes >= 0
在此之后,将.ini文件中的openkey设置为true。如何实施?有没有更简单的方法
我需要知道它,因为在应用程序第一次打开时,我会更新数据库中的列表
感谢您的帮助。提前感谢。“最佳”是一个移动的目标。对于一个应用程序,一种方法可能是最好的,但另一个应用程序可能需要完全不同的东西
也就是说,您需要涵盖一些概念:
请参阅我在您的问题中关于您是否在一个单独的工作站/多用户上进行跟踪等的评论,这将指示您将日期时间存储在何处(在数据库中、在机器级别范围内、在用户级别范围内等) 现在,对于你所存储的东西,如果你是多用户应用程序(甚至手机,笔记本电脑),别忘了考虑时区。对于这一点,别忘了考虑夏时制。(这些时间上的变化可能会让你认为一天已经过去,而事实并非如此,反之亦然) 我建议您始终以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
//保存开始时间:
var startTime=DateTime.UtcNow;
(保存开始时间)
...
//比较时代:
//另外,您是否担心每24小时检查一次,还是希望按日历日期进行检查?
//您已经有了每24小时检查一次的代码,所以我将显示按日历天数排列的代码
if(startTime.Date
中的每个用户将是我选择的位置 为什么额外的布尔值?有约会就足够了。如果日期不是今天,那么它今天就没有打开。您的应用程序是多用户的吗?您需要知道这是否是第一次在给定的工作站上运行应用程序吗?由该工作站上的给定用户执行?或者,您需要知道这是整个安装的第一次吗?一个具有应用范围的单例,将上次使用日期保存在变量中?您想知道它是在给定的一天内打开的,还是在上次打开后的24小时内打开的?例如,在晚上8点和第二天凌晨1点打开它算是在两天内打开一次,还是在一天内打开两次?请记住,您可能需要使用DateTime.Now.AddDays(减)可能会得到更好的结果您在处理DateTime时,这里是一个示例,我用来查看文件的写入时间是否已更改字符串testDate=string.Format(“{0}”),DateTime.Now.AddDays(-Convert.ToInt32(strDateDelay)),“dd-mmm-yyyy”);需要检查11:59:59,他是否可以写一个TimeSpan方法检查(((TimeSpan)(DateTime.Now-fiUpdateFileFile.LastWriteTime)).TotalHours<24),但是如果他想检查的话,检查存储在.INI/.config文件TotalHours中的时间也会起作用,或者DateTime.UtcNow,我在某处读到的更快。下面的文章声称.UtcNow或.Now的性能提高了100倍以上。