将一组数字转换为日期

时间:2015-07-22 14:30:42

标签: c# datetime

我有一个具有此格式的字符串

20150622
yyyyMMDD

但我需要将其转换为以下格式

year-month-date
2015-06-22

C#有办法做我需要的吗?我还没有看到在C#中将字符串视为数组,那么它有什么用呢?

2 个答案:

答案 0 :(得分:6)

  

我还没有看到在C#

中将字符串视为数组

.NET中的字符串数组。它们是字符数组,但这对你没有帮助!

您尝试做的是解析一个字符串来创建日期。这是通过DateTime.Parse及其许多重载/变体

完成的

最明显的方法是使用ParseExact(或者,可能更恰当TryParseExact):

var myDate = DateTime.ParseExact("20150622","yyyyMMdd",CultureInfo.CurrentCulture);

要完全回答您的问题,您可以通过使用所需格式格式化DateTime来重新生成字符串。

另一件需要考虑的事情是,如果你从未对日期本身感兴趣,那么你可以使用一些字符串混搭来完成你的任务。

你想要的是{chars0-3}{hyphen}{chars4-5}{hyphen}{chars6-7},这很容易

var input = "20150622";
var output = String.Format("{0}-{1}-{2}",
                     input.Substring(0,4),
                     input.Substring(4,2),
                     input.Substring(6,2))

答案 1 :(得分:6)

您可以使用DateTime格式(没有yyyyMMdd说明符)将字符串解析为DD,并生成yyyy-MM-dd格式的字符串表示形式;

string s = "20150622";
DateTime dt = DateTime.ParseExact(s, "yyyyMMdd", CultureInfo.InvariantCulture)
Console.WriteLine(dt.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture));

输出;

2015-06-22

但如果您的字符串部分不在Gregorian calendar的年,月和日范围内,则此解决方案无法正常工作。在这种情况下,您可以使用String.Substring method获取字符串的一部分,并使用-分隔符格式化它们;

var s = "20150622";
var result = String.Format("{0}-{1}-{2}",
                            s.Substring(0,4),
                            s.Substring(4,2),
                            s.Substring(6,2));

结果;

2015-06-22