gpt4 book ai didi

c# - 使用 LinQ 将字符串中的部分字符串日期与 C#.NET 中的日期时间进行比较

转载 作者:行者123 更新时间:2023-11-30 20:53:56 28 4
gpt4 key购买 nike

帮助我如何使用 Linq 或任何简单的方法将字符串中的部分字符串日期与 C#.NET 中的确切日期时间进行比较?

例子:

//  10/23/2013 03:43:56 PM
string fileImageName = "Picture_MIGA1_2013_10_23_15_43_56.png";

最佳答案

使用 DateTime.TryParseExact (除其他事项外):

DateTime toCompare = new DateTime(2013, 10, 23, 15, 43, 56);
string fileImageName = "Picture_MIGA1_2013_10_23_15_43_56.png";
var tokens = Path.GetFileNameWithoutExtension(fileImageName).Split('_');
// take last 6 because there are the datetime informations in the filename
var dateTokens = tokens.Skip(Math.Max(0, tokens.Length - 6)).Take(6).ToArray();
if (dateTokens.Length == 6)
{
DateTime dt;
DateTime.TryParseExact(
string.Join("_", dateTokens),
"yyyy_MM_dd_HH_mm_ss",
CultureInfo.InvariantCulture,
DateTimeStyles.None,
out dt);
bool isSame = toCompare == dt; // true
}

编辑

How can i write with LinQ query

你没有提到你有什么类型的收藏。所以我展示了一个 List<string> 的例子,为了简化您的单个字符串:

var fileNames = new List<string>() { "Picture_MIGA1_2013_10_23_15_43_56.png" };
List<string> allMatching = fileNames
.Where(fn =>
{
var tokens = Path.GetFileNameWithoutExtension(fn).Split('_');
var dateTokens = tokens.Skip(Math.Max(0, tokens.Length - 6)).Take(6).ToArray();
if (dateTokens.Length == 6)
{
DateTime dt;
DateTime.TryParseExact(
string.Join("_", dateTokens),
"yyyy_MM_dd_HH_mm_ss",
CultureInfo.InvariantCulture,
DateTimeStyles.None,
out dt);
return toCompare == dt;
}
return false;
}).ToList();

关于c# - 使用 LinQ 将字符串中的部分字符串日期与 C#.NET 中的日期时间进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19543860/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com