C#:如何简化这个数字字符串到各种日期部分代码

C#:如何简化这个数字字符串到各种日期部分代码,第1张

概述我有一个字符串,长度可能在1到8个字符之间.我需要把它们转换成一天,一个月和一年.对于缺少的部分,我将使用当前的部分. 我现在的代码有点大而且丑陋,我想知道是否有人对如何做到这一点有更聪明的想法. 我目前的代码如下: var day = DateTime.Now.Day;var month = DateTime.Now.Month;var year = DateTime.Now.Year; 我有一个字符串,长度可能在1到8个字符之间.我需要把它们转换成一天,一个月和一年.对于缺少的部分,我将使用当前的部分.

我现在的代码有点大而且丑陋,我想知道是否有人对如何做到这一点有更聪明的想法.

我目前的代码如下:

var day = DateTime.Now.Day;var month = DateTime.Now.Month;var year = DateTime.Now.Year;switch (digits.Length){    case 1:    case 2:        day = int.Parse(digits.Substring(0));        break;    case 3:    case 4:        day = int.Parse(digits.Substring(0,2));        month = int.Parse(digits.Substring(2));        break;    case 5:    case 6:    case 7:    case 8:        day = int.Parse(digits.Substring(0,2));        month = int.Parse(digits.Substring(2,2));        year = int.Parse(digits.Substring(4));        break;    default:        break;}

注意:我知道这不是考虑文化,但它不应该:)

我试着这样做:

day = int.Parse(digits.Substring(0,2));if(digits.Length > 2)    month = int.Parse(digits.Substring(2,2));if(digits.Length > 4)    year = int.Parse(digits.Substring(4,4));

但如果字符串长度为1,3,5,6或7位,它将抛出ArgumentOutOfRangeException …因此效果不佳.如果没有足够的字母来“填充”子字符串,那么只有Substring方法才会占用尽可能多的字母而不是失败…

可以使用正则表达式吗?

解决方法 看看 TryParseExact方法.

DateTime date;if (DateTime.TryParseExact(    digits,new[] { "dd","ddMM","ddMMyyyy" },CultureInfo.InvariantCulture,DateTimeStyles.None,out date)){    int day = date.Day;    int month = date.Month;    int year = date.Year;    }
总结

以上是内存溢出为你收集整理的C#:如何简化这个数字字符串到各种日期部分代码全部内容,希望文章能够帮你解决C#:如何简化这个数字字符串到各种日期部分代码所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1215734.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存