【问题标题】:time on clock vs. hour时钟时间与小时
【发布时间】:2017-01-20 06:49:23
【问题描述】:

所以我已经在网上搜索了 2 周,以将早上 6 点作为变量作为一天的开始

TimeSpan start = new TimeSpan(06,30,00);

但问题是,当我这样做时,它会将时间转换为一个小时

DateTime now = DateTime.Parse(DateTime.Today);
double span = (now - start);

我得到 timenow(3:00pm) - 6 小时 30 分钟而不是 timenow(3:00 PM) - 6:30 AM 所以我需要得到 timenow 和 start 之间的差异 double 以便答案将显示 1.5 小时而不是 1 小时和 30 分钟,而且我是否必须添加上午/下午?如果是这样,我该怎么做并能够将其存储在 sql 数据库中?

【问题讨论】:

  • timenow 和 start 的区别并显示分钟
  • 这听起来很混乱,也许尝试改写/格式化您问题的第二部分并包含一些示例?例如,您希望“6:30am”显示为 6.50 还是 6.30
  • 您是否尝试这样做来转换时区?
  • 不,我计算从 timenow 到 start 之间的总小时数

标签: c# time


【解决方案1】:

通过这种方法,很明显这意味着早上

var todayMorning = DateTime.Today.AddHours(6).AddMinutes(30);
var hoursTillNow = (DateTime.Now - todayMorning).TotalHours;
var minutesTillNow = (DateTime.Now - todayMorning).TotalMinutes;

var todayEvening = DateTime.Today.AddHours(18).AddMinutes(30);
//...

【讨论】:

    【解决方案2】:

    首先早上 6 点是 new TimeSpan(6, 0, 0),而 new TimeSpan(6, 30, 0) 是 06:30。这里不清楚是代码有误还是描述有误。

    现在的日期时间 = DateTime.Parse(DateTime.Today);

    这是无效的。 DateTime now = DateTime.Today; 是有效的,但它将是今天而不是现在,也就是说它与今天开始时的午夜相同。您可能需要 DateTime now = DateTime.Now 表示当地时间或 DateTime now = DateTime.UtcNow 表示 UTC。

    (现在 - 开始)

    这将花费一定的时间远离日期时间。例如。现在是2017-01-20 10:03:01,所以花6.5小时给我2017-01-20 03:33:24

    要获得两个日期时间之间的跨度,我们需要两个日期时间:

    DateTime now = DateTime.Now;
    DateTime halfSixThisMorning = DateTime.Today + new TimeSpan(6, 30, 0);
    TimeSpan span = now - halfSixThisMorning;
    

    然后span.TotalHours 是一个double,其小时数为span,包括小数部分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多