包含不检查日期范围

Tec*_*Guy 0 c#

我的日期范围是这样的,

string ActualReleaseDates ="7/8/2016, 7/9/2016, 7/11/2016,7/3/2016,7/10/2016,7/17/2016,7/24/2016,7/31/2016";
string NewsReleasedDate ="07/11/2016";
Run Code Online (Sandbox Code Playgroud)

我想检查NewsReleaseDate是否在ActualReleaseDates中

但是在下面的代码中它返回false.

if (ActualReleaseDates.Split(',').Contains(NewsReleasedDate.TrimStart(new Char[] { '0' })))
{
    //some code here
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 6

直接的问题是,你的分裂后ActualReleaseDates的字符串,没有的条目"7/11/2016"......相反,还有的进入" 7/11/2016"......注意空格.

但更重要的是,NewsReleasedDate如果价值类似于"07/08/2016" ,那么仅仅修剪一开始就无济于事......您应该做的是将这些值作为日期而不是字符串处理:

  • ActualReleaseDates用逗号分割,然后以适当的格式解析每个值(在修剪空格之后)(我怀疑是M/d/yyyy这样),这样你就得到了List<DateTime>.
  • NewsReleasedDate以适当的格式解析,我怀疑是MM/dd/yyyy,所以你得到了DateTime.
  • 查看第二步中的解析值是否出现在第一步的列表中.

(我个人建议使用Noda Time并解析LocalDate值,但我有偏见......)

从根本上说,您正在尝试查看日期列表中是否出现一个日期 ...因此请确保尽早将数据转换为最合适的数据.理想情况下,避免使用字符串为此不惜一切 ......我们不知道你的数据来的,但如果它在另一个代表开始了和被转换文本,看看你能不能避免这种转换.