gpt4 book ai didi

C# DateTime.ParseExact 格式带有反斜杠

转载 作者:行者123 更新时间:2023-11-30 13:57:59 24 4
gpt4 key购买 nike

我有一些以日期命名的子目录,如下所示:

C:\SomeDirectory\201309\01
C:\SomeDirectory\201309\02
C:\SomeDirectory\201309\03
C:\SomeDirectory\201309\04
C:\SomeDirectory\201309\05

等等

我想做的是获取目录列表,然后使用 Linq 根据日期范围限制我的结果。

我已经让它像这样工作了:

string path = @"C:\SomeDirectory";
DateTime f = new DateTime(2013, 9, 1);
DateTime t = new DateTime(2013, 9, 3);
DateTime dt;
var dirs =
Directory.GetDirectories(path, "*.*", SearchOption.AllDirectories)
.Where(d => DateTime.TryParseExact(
d.Substring(Math.Max(0, d.Length - 9)).Replace("\\", null),
"yyyyMMdd",
CultureInfo.Invarient,
DateTimeStyles.None,
out dt)
&& f <= dt
&& dt <= t);

但是,我想更改 TryParseExact 部分,这样我就不必替换反斜杠 - 就像这样:

DateTime.TryParseExact(
d.Substring(Math.Max(0, d.Length - 9)),
@"yyyyMM\dd",
CultureInfo.Invarient,
DateTimeStyles.None,
out dt)

但是,TryParseExact 似乎不喜欢这种格式。我当时认为这可能与 CultureInfo 有关 - 但我无法找到可能的解决方案来帮助我处理反斜杠。

如有任何帮助,我们将不胜感激!

最佳答案

根据 Custom Date and Time Format Strings在 MSDN \ 上是一个转义字符。所以在 @"yyyyMM\dd" 中,它从第一个 d 中删除了特殊含义。您应该转义 \ :

To include a backslash in a result string, you must escape it with another backslash (\\).

所以请尝试以下操作:

DateTime.TryParseExact(
d.Substring(Math.Max(0, d.Length - 9)),
@"yyyyMM\\dd",
CultureInfo.InvariantCulture,
DateTimeStyles.None,
out dt)

关于C# DateTime.ParseExact 格式带有反斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18873294/

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