加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 01:38:38 所属栏目:百科 来源:网络整理
导读:我正在编写一个将字符串转换为日期的C#类.我觉得很容易.该类接受格式字符串,如“yyyy-MM-dd”和输入字符串,如“2010-10-10” 但是我有些情况会给我带来麻烦: format "yyyyMMdd" input "19950000" 要么 format "dd-MM-yyyy" input "00-06-2001" 请注意,这些
我正在编写一个将字符串转换为日期的C#类.我觉得很容易.该类接受格式字符串,如“yyyy-MM-dd”和输入字符串,如“2010-10-10”

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

format "yyyyMMdd" input "19950000"

要么

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

请注意,这些情况的日期和/或月份为零(’00’),并且这些情况无法转换为DateTime.我需要更换它们.

为了处理这些情况,我需要在部分中分割输入字符串,每个日期,月份和年份,因此我可以设置一些默认的日期和月份(可能是01),如果它们丢失了.但我需要使用formatstring来实现这一目标.

所以问题是,如何在formatstring中指定的组件中拆分inputtring?

谢谢

[更新]使用Joe的回答我想出了这个:

string[] formats = { format,format.Replace("dd","00").Replace("MM","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",DateTimeStyles.None);
d = DateTime.ParseExact("20100900",DateTimeStyles.None);
d = DateTime.ParseExact("20100000",DateTimeStyles.None);

缺少的天数/月将设置为默认值1.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读