我已将Api的响应解析为日期字符串及其数据。日期字符串显示为:
"201710010900000"
我想要做的是将其转换为date
mm/dd/yyyy
可以读取的格式
我必须抓住前4个字母作为年份,接下来的2个作为月份,接下来的2个作为日期。理想情况下,将这些称为日期,月份,日期的单独字符串。这样它就可以转换成一个字符串。
string reDate = (month + "/" + day + "/" + year);
有没有办法单独调用字符串的每个字符,或者最好的方法是什么?
答案 0 :(得分:8)
字符串是一个字符数组。只需迭代它或使用索引器,例如:
var someChar="201710010900000"[0];
如果您想将此解析为日期,则不需要这样做。只需使用DateTime.ParseExact,例如:
var input="201710010900000";
var format="yyyyMMddHHmmssf";
var date=DateTime.ParseExact(input,format,CultureInfo.InvariantCulture);
其他重载允许您指定多种格式,例如this one。
如果转换失败,ParseExact将抛出异常。如果您希望这是常见现象,可以使用TryParseExact:
var styles=DateTimeStyles.None;
var culture=CultureInfo.InvariantCulture;
if (DateTime.TryParseExact(input,format,culture,styles,out var date))
{
//Do something with the date
}
获得DateTime值后,您可以使用the standard string formatting mechanisms在所需的文化中生成具有所需格式的字符串。
如果您想要美式短日期,可以写下以下任何一种:
var targetCulture = CultureInfo.GetCultureInfo("en-US");
var text1=date.ToString("d",targetCulture);
var text2=String.Format(targetCulture,"This is my date: {0:d}",result);
答案 1 :(得分:6)
DateTime.ParseExact
或DateTime.TryParseExact
:
DateTime dt;
bool validDate = DateTime.TryParseExact("201710010900000", "yyyyMMddHHmmssf", null, DateTimeStyles.None, out dt);
要分隔日,月等,您只需使用可用的属性:
int year = dt.Year;
int month = dt.Month;
int day = dt.Day;
int hour = dt.Hour;
如果您希望使用此格式的返回字符串:month+"/"+ day+"/"+year
使用DateTime.ToString
:
string returnString = dt.ToString("MM/dd/yyyy", CultureInfo.InvariantCulture);
答案 2 :(得分:3)
ParseExact
加入DateTime
,然后将其表示为String
:
string source = "201710010900000";
string result = DateTime
.ParseExact(source, "yyyyMMddHHmmssf", CultureInfo.InvariantCulture)
.ToString("MM'/'dd'/'yyyy");
答案 3 :(得分:1)
如果您的计划要反复进行。在回复中你可以尝试类似的东西:
var input = "201710010900000";
var year = Convert.ToInt32(input.Substring(0, 4));
var month = Convert.ToInt32(input.Substring(4, 2));
var day = Convert.ToInt32(input.Substring(6, 2));
var hour = Convert.ToInt32(input.Substring(8, 2));
var minutes = Convert.ToInt32(input.Substring(10, 2));
var seconds = Convert.ToInt32(input.Substring(12, 2));
var date = new DateTime(year, month, day, hour, minutes, seconds);
Console.WriteLine(date);
我希望它有所帮助,
另一个方法是创建一个新的日期,指定其他人在这里回答的输入格式(并且公平地说是非常好的方法)。
涓