我的问题是,我想从DateTime列表中找到最高的DateTime?
我有一个数组假设string[] btime = new string[100];
在该数组中,我存储了来自SQL-Server的日期
SQL查询为[CONVERT(varchar(10),GETDATE(),101)]
,它以 MM / dd / yyyy 的格式返回日期
然后我将日期与我自己给定的时间连接起来
即.btime[j] = SqlServerDate + " " + 15:20;
等等;
现在,从这个给定的数组我想找到最高的日期和时间
所以,我使用了这个逻辑
string large=""
large=btime[0];
for (int i = 0; i < j; i++)
{
if (DateTime.Compare(DateTime.Parse(btime[i]),DateTime.Parse(large)) > 0)
{
large = btime[i];
}
}
但我在
收到错误if(DateTime.Compare(DateTime.Parse(btime[i]),DateTime.Parse(large)) > 0)
错误字符串无法识别为有效日期时间由于我的系统日期时间格式为 yyyy / dd / MM
,因此发生此错误所以Plz任何人都可以帮助我解决这个问题 我不想改变系统的格式
答案 0 :(得分:6)
其他人提出了解析DateTime
的不同方法。这对我来说似乎毫无意义 - 如果您可以更改查询,只需避免首先执行转换为字符串。您使用的转换次数越少,此类问题出现问题的可能性就越小。
更改查询,以便最终得到DateTime
值,然后在LINQ中找到最新的值是微不足道的:
DateTime latest = dateTimes.Max();
答案 1 :(得分:3)
呜呜,
// Containing your datetime field
string[] btime = new string[100];
var max = btime.Select(s => DateTime.Parse(s, "MM/dd/yyyy", CultureInfo.InvariantCulture)).Max();
答案 2 :(得分:0)
使用DateTime.ParseExact方法。 例如:
CultureProvider provider = CultureInfo.InvariantCulture;
DateTime.ParseExact(btime[i], "yyyy/dd/MM", provider);
答案 3 :(得分:0)
您可以使用DateTime.ParseExact()
功能执行此操作。请参阅以下代码部分。
CurDate = DateTime.ParseExact(Name3, "yyyyMMddhhmmssffff", System.Globalization.CultureInfo.CurrentCulture, System.Globalization.DateTimeStyles.None)
答案 4 :(得分:0)
您可以使用DateTime.ParseExact() method。
CultureProvider provider = CultureInfo.InvariantCulture;
DateTime.ParseExact(btime[i], "MM/dd/yyyy HH:mm", provider);
第二个参数是格式字符串。这指定了日期的格式。
由于你在最后增加24小时的时间,你需要HH:mm(HH表示期望24小时)。
答案 5 :(得分:0)
感谢大家。
我得到了某种答案:
string large = "";
large = btime[0];
IFormatProvider culture = System.Threading.Thread.CurrentThread.CurrentCulture;
// This Code will convert the System Format in Thread, Not the Actual Format
// of The System
CultureInfo ciNewFormat = new CultureInfo(CultureInfo.CurrentCulture.ToString());
ciNewFormat.DateTimeFormat.ShortDatePattern = "MM/dd/yyyy";
System.Threading.Thread.CurrentThread.CurrentCulture = ciNewFormat;
for (int i = 0; i < TimeBackupCounter; i++)
{
if (DateTime.Compare(DateTime.Parse(btime[i]),DateTime.Parse(large)) > 0)
{
large = btime[i];
}
}