代码之家  ›  专栏  ›  技术社区  ›  Arpit Gupta

在双数组中获取给定日期的第一个日期索引

  •  -1
  • Arpit Gupta  · 技术社区  · 8 年前

    我有一个 double 日期数组(转换为双精度)使用 DateTime.ToOaDate() . 它还包括 Datetime 在 Double 像-

    26-July-2018 14:00:00
    27-July-2018 12:09:00
    27-July-2018 12:10:00
    27-July-2018 12:15:00
    28-July-2018 12:50:00
    28-July-2018 13:40:00
    

    现在,我有一个具体的约会 27-July-2018 12:15:00 . 我要索引,从哪里开始 27-July-2018 起动。在上面的例子中,我想要 27-July-2018 12:09:00 。

    请注意,我已经用日期时间格式解释了一些事情。但在 事实上,所有这些数据都在 双重的 数组。

    2 回复  |  直到 8 年前
        1
  •  2
  •   Lucifer    8 年前

    你可以试试:

    DateTime tocheck = new DateTime();
    tocheck = DateTime.Parse("27-July-2018 12:15:00");
    double tochkd = tocheck.ToOADate();
    
    int index = dateDouble.IndexOf(dateDouble.FirstOrDefault(x => (int)x == (int)tochkd));
    

    或者你也可以这样做

    int index = dateDouble.IndexOf(dateDouble.FirstOrDefault(x => (int)x == tocheck.Date.ToOADate());
    

    输出:

       result = 1
    

    如果该值存在,它将返回索引,否则它将返回-1

        2
  •  1
  •   Michał Turczyn    8 年前

    试试这个:

    List<DateTime> dt = new List<DateTime>
    {
        new DateTime(2018,7,26,14,0,0),// 26-July-2018 14:00:00
        new DateTime(2018,7,27,12,9,0),//27 - July - 2018 12:09:00
        new DateTime(2018,7,27,12,10,0),//27 - July - 2018 12:10:00
        new DateTime(2018,7,27,12,15,0),//27 - July - 2018 12:15:00
        new DateTime(2018,7,28,12,50,0),//28 - July - 2018 12:50:00
        new DateTime(2018,7,28,13,40,0)//28 - July - 2018 13:40:00
    };
    
    List<double> dbl = dt.Select(d => d.ToOADate()).ToList();
    DateTime startDate = new DateTime(2018, 7, 27, 12, 15, 0);
    double startDateDbl = (new DateTime(startDate.Year, startDate.Month, startDate.Day, 0, 0, 0)).ToOADate();
    List<double> filteredDates = dbl.Where(d => d >= startDateDbl).ToList();