gpt4 book ai didi

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

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

我有一个长度可能在 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#:如何简化这个数字字符串到各种日期部分的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2013731/

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