1

Below is my code

var result =
    (from SV in Tbl
     where (DateTimeOffset.Parse(SV.FieldName) >= DateTimeOffset.Parse(StartDate) 
     && DateTimeOffset.Parse(SV.FieldName) <= DateTimeOffset.Parse(EndDate))
     group SV by 1 into SVgrp
     select new { Count = SVgrp.Sum(p => p.Count) }).ToList()

The value of SV.FieldName = '19-06-2015', StartDate = '2015-09-20T00:00:00Z', EndDate = '2015-10-21T23:59:59Z'

On my development machine, this code works perfectly whereas on my server, its giving me error String was not recognized as a valid DateTime

Both my machines have date format set as English(India), Location as India and Timezone set as UTC.

I tried adding CultureInfo.InvariantCulture on all four Parse methods, but the error did not go.

Why am I getting this error on server only? How can it be solved?

4

2 に答える 2

1

s.FieldName = '19-06-2015' の値を変換するときにエラーが発生することは確かです。コンパイラは、形式が MM-dd-yyyy であると想定するため、19 は無効な月番号と見なされます。

私の提案は、日付値を作成することです。以下を参照してください

    var result = (from SV in Tbl
           where (new DateTime(Convert.ToInt32(SV.FieldName.Substring(6, 4)), Convert.ToInt32(SV.FieldName.Substring(3, 2)), Convert.ToInt32(SV.FieldName.Substring(0, 2))) >= DateTimeOffset.Parse(StartDate) 
           && new DateTime(Convert.ToInt32(SV.FieldName.Substring(6, 4)), Convert.ToInt32(SV.FieldName.Substring(3, 2)), Convert.ToInt32(SV.FieldName.Substring(0, 2))) <= DateTimeOffset.Parse(EndDate))
           group SV by 1 into SVgrp
           select new { Count = SVgrp.Sum(p => p.Count) }).ToList()

これは最善ではありませんが、うまくいきます。

于 2015-10-21T09:52:50.893 に答える