【问题标题】:Correct format to input date with time of the day正确的格式以输入日期和时间
【发布时间】:2016-02-02 23:13:59
【问题描述】:

我希望能够计算从 2016 年 2 月 13 日下午 12:35 到 2016 年 2 月 14 日下午 1:45 之间经过的时间(以小时和分钟为单位),但无法找出正确的输入格式它。 编辑:应该补充一点,时间之间的跨度将存储在一个数组列表中,每个客户一个跨度。

【问题讨论】:

  • 日期时间的格式是什么?它们是字符串,还是已经是 DateTime 的实例?
  • 两个日期时间之间的差异会产生一个包含您需要的所有属性的 TimeSpan。只需创建两个日期时间,减去并查看生成的 TimeSpan
  • 我的问题是如何通过用户输入创建一个包含一天中时间的日期时间。
  • 用户输入是什么样的?字符串,日期选择器?您是否正在寻找DateTime.Parse
  • 你真的在使用ArrayList吗?他们是如此的 2002 年。

标签: c# datetime time


【解决方案1】:

基本上,你需要这样的东西:

var dateA = new DateTime(2016,2,13,12,35,0);
var dateB = new DateTime(2016,2,14,1,45,0);

var timespan = dateB - dateA;
var hours = timespan.Hours;
bar minutes = timespan.Minutes;

【讨论】:

    【解决方案2】:

    下面是我的做法:

    Func<string, DateTime?> tryParse = t =>
    {
        DateTime output;
        if (DateTime.TryParseExact(
            t,
            new [] { "h:mmtt MM/dd/yyyy" },
            System.Globalization.CultureInfo.CurrentCulture,
            System.Globalization.DateTimeStyles.AssumeLocal,
            out output))
        {
            return output;
        }
        return null;
    };
    
    var dt1 = tryParse("12:35pm 02/13/2016");
    var dt2 = tryParse("1:45pm 02/14/2016");
    
    TimeSpan? ts = null;
    if (dt1.HasValue && dt2.HasValue)
    {
        ts = dt2.Value.Subtract(dt1.Value);
    }
    
    if (ts.HasValue)
    {
        Console.WriteLine(
            String.Format(
                "{0} hours & {1} minutes",
                ts.Value.Hours,
                ts.Value.Minutes));
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多