代码之家  ›  专栏  ›  技术社区  ›  core

使用TimeSpan和DateTime进行计算

  •  1
  • core  · 技术社区  · 11 年前

    根据当前时间,我需要计算一家商店是否真的在营业。到目前为止,开放时间保持为 TimeSpan :

    public TimeSpan OpeningTime { get; set; }
    public TimeSpan ClosingTime { get; set; }
    

    我如何计算商店现在是否开门?我尝试了一些想法,但解决方案看起来相当繁琐。其中一个原因是需要在 时间跨度 DateTime 时间跨度 开放时间的正确格式?现在单独上课更有意义吗?

    注:周天数另行处理

    5 回复  |  直到 11 年前
        1
  •  5
  •   to StackOverflow    11 年前

    如果:

    OpeningTime <= DateTime.Now.TimeOfDay <= ClosingTime
    
        2
  •  2
  •   D Stanley John Koerner    11 年前

    嗯,一个 TimeSpan 是衡量 两次之间的差异 ,不是 实际时间 .

    假设您正在使用 时间跨度 指示打开和关闭时间 相对于午夜 尝试

    TimeSpan currentTime = DateTime.Now.TimeOfDay;   
    bool isOpen = currentTime > OpeningTime && currentTime < ClosingTime;
    
        3
  •  0
  •   Jeppe Stig Nielsen    11 年前

    尝试以下操作:

    var timeOfDay = DateTime.Now.TimeOfDay;
    if (timeOfDay >= OpeningTime && timeOfDay < ClosingTime)
    {
        // open now!
    }
    
        4
  •  0
  •   sa_ddam213    11 年前

    你可以使用 DateTime.Now.TimeOfDay 并与您的2个时间跨度进行比较

        OpeningTime = new TimeSpan(9, 30, 0); // 9:30AM
        ClosingTime = new TimeSpan(17, 30, 0); // 5:30AM
    
        bool isOpen = DateTime.Now.TimeOfDay >= OpeningTime && DateTime.Now.TimeOfDay <= ClosingTime;
    
        5
  •  0
  •   SamiHuutoniemi    11 年前
    TimeSpan OpeningTime = new TimeSpan(8, 0, 0);
    TimeSpan ClosingTime = new TimeSpan(16, 0, 0);
    
    TimeSpan now = DateTime.Now - DateTime.Now.Date;
    
    if (now > OpeningTime && now < ClosingTime)
    { 
        //...
    }