我有一个具有这种格式的字符串
20150622
yyyyMMDD
Run Code Online (Sandbox Code Playgroud)
但我需要将其转换为以下格式
year-month-date
2015-06-22
Run Code Online (Sandbox Code Playgroud)
在C#中有办法做我需要的吗?我还没有看到在C#中将字符串视为数组,那么它有什么用呢?
我不认为无论如何在C#中将字符串视为数组
字符串是 .NET 中的数组.它们是字符阵列,但这对你没有帮助!
你要做的是解析一个字符串来创建一个日期.这是通过DateTime.Parse及其许多过载/变体完成的
最明显的方法是使用ParseExact(或者,可能更恰当TryParseExact):
var myDate = DateTime.ParseExact("20150622","yyyyMMdd",CultureInfo.CurrentCulture);
Run Code Online (Sandbox Code Playgroud)
要完全回答您的问题,您可以通过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))
Run Code Online (Sandbox Code Playgroud)
您可以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));
Run Code Online (Sandbox Code Playgroud)
输出;
2015-06-22
Run Code Online (Sandbox Code Playgroud)
但是如果您的字符串部分不在格里高利历的年,月和日范围内,则此解决方案将无效.在这种情况下,您可以使用String.Substring方法获取字符串的一部分,并使用-分隔符格式化它们;
var s = "20150622";
var result = String.Format("{0}-{1}-{2}",
s.Substring(0,4),
s.Substring(4,2),
s.Substring(6,2));
Run Code Online (Sandbox Code Playgroud)
结果;
2015-06-22
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
109 次 |
| 最近记录: |