Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如果应用程序是在一天中第一次打开,那么最好的方法是什么?_C#_.net_Logic - Fatal编程技术网

C# 如果应用程序是在一天中第一次打开,那么最好的方法是什么?

C# 如果应用程序是在一天中第一次打开,那么最好的方法是什么?,c#,.net,logic,C#,.net,Logic,我正在寻找一个示例代码,如何知道这是应用程序在一天中第一次打开? 我尝试将当前日期保存在.ini文件中,并使用布尔值定义名为open的键,然后比较: DateTime.Now.Substract(*old date from .ini file*).TotalMinutes >= 0 在此之后,将.ini文件中的openkey设置为true。如何实施?有没有更简单的方法 我需要知道它,因为在应用程序第一次打开时,我会更新数据库中的列表 感谢您的帮助。提前感谢。“最佳”是一个移动的目标。

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

DateTime.Now.Substract(*old date from .ini file*).TotalMinutes >= 0 
在此之后,将.ini文件中的openkey设置为true。如何实施?有没有更简单的方法

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

感谢您的帮助。提前感谢。

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

也就是说,您需要涵盖一些概念:

  • 一些地方可以记住“最后一次打开”的时间
  • 一些代码检查时间,更新时间,并每天做一次工作
  • 从你的问题来看,#2非常简单,只要你知道#1应该是什么。因此,这里有一些#1的潜在选择

  • 数据库(在绑定到用户id之类的内容的表中)
  • Ini文件(如您所述)
  • 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
    
    
    //保存开始时间:
    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倍以上。