gpt4 book ai didi

c# - 转换时拆分 DateTime 字符串

转载 作者:行者123 更新时间:2023-11-30 14:18:46 24 4
gpt4 key购买 nike

我正在编写一个将字符串转换为日期的 C# 类。我想很容易。该类接受像“yyyy-MM-dd”这样的格式字符串和像“2010-10-10”这样的输入字符串

但是我有一些情况给我带来了麻烦:

format "yyyyMMdd" input "19950000"

format "dd-MM-yyyy" input "00-06-2001"

请注意,这些情况下的日和/或月为零 ('00'),并且这些不能转换为 DateTime。我需要更换它们。

为了处理这些情况,我需要将输入字符串分成几部分,分别代表日、月和年,这样我就可以设置一些默认的日和月(可能是 01)(如果它们丢失了)。但我需要使用格式字符串来完成此操作。

那么问题来了,如何在格式字符串中指定的组件中拆分输入字符串?

谢谢

[更新] 根据 Joe 的回答,我想到了这个:

string[] formats = { format, format.Replace("dd", "00").Replace("MM", "00"), format.Replace("dd", "00"), format.Replace("MM", "00") };

// Parse input
DateTime d = DateTime.ParseExact(txtDate.Text, formats, CultureInfo.InvariantCulture, DateTimeStyles.None);

这使用提供的格式并为日、月以及日和月创建具有零 ('00') 的替代格式。

谢谢乔!

最佳答案

如果您有一组明确定义的格式,则可以使用 DateTime.ParseExact,传递一组格式字符串。

// Define all allowed formats
string[] formats = { "yyyyMMdd", "yyyyMM00", "yyyy0000" };

// Parse input
DateTime d;
d = DateTime.ParseExact("20100930", formats,
CultureInfo.InvariantCulture, DateTimeStyles.None);
d = DateTime.ParseExact("20100900", formats,
CultureInfo.InvariantCulture, DateTimeStyles.None);
d = DateTime.ParseExact("20100000", formats,
CultureInfo.InvariantCulture, DateTimeStyles.None);

缺失的天数/月数将设置为默认值 1。

关于c# - 转换时拆分 DateTime 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3900230/

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