关于C#:将字符串转换为日期时间(d-mm-yyyy)

Convert String To DateTime (d MM yyyy)

本问题已经有最佳答案,请猛点这里访问。

如何将String01 Juni 2015转换成DateTime

我尝试i,但显示错误消息(如下所示):

enter image description here

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
string urlPath ="website";
var values = new List<KeyValuePair<string, string>>
{


};
var response = await client.PostAsync(new Uri(urlPath), new Windows.Web.Http.HttpFormUrlEncodedContent(values));
response.EnsureSuccessStatusCode();

if (!response.IsSuccessStatusCode)
{
    RequestException();
}

string jsonText = await response.Content.ReadAsStringAsync();
JsonObject jsonObject = JsonObject.Parse(jsonText);
JsonArray jsonData1 = jsonObject["data"].GetArray();

foreach (JsonValue groupValue in jsonData1)
{
    JsonObject groupObject = groupValue.GetObject();

    string tanggal = groupObject["tgl"].GetString();
    BukuAudio file = new BukuAudio();
    string[] formats = {"d MMM yyyy" };
    var dateTime = DateTime.ParseExact(tanggal.Text, formats, new CultureInfo("id-ID"), DateTimeStyles.None);
    file.Tanggal = n;
    datasource.Add(file);

}

注:

日期对JSON具有约束力。


您应该使用四个M(MMMM)而不是三个M(MMM),因为您的月份是Juni而不是Jun

1
2
string[] formats = {"d MMMM yyyy" };
var dateTime = DateTime.ParseExact(tanggal.Text, formats, new CultureInfo("id-ID"), DateTimeStyles.None);

单或双d是可以的,因为您的格式是01 Juni ...格式,但是如果您的格式是1 Juni ...格式,那么您应该使用单d格式。


您指定的格式是d MMM yyyy,而您试图解析的日期是01 Juni 2015。这些不匹配,因此转换失败。

要使其工作,请将格式更改为dd MMMM yyyy

msdn具有日期时间格式字符串列表:https://msdn.microsoft.com/en-us/library/8kb3ddd4(v=vs.110).aspx


它应该是MMMM(不是MMM),使用"d MMMM yyyy"作为格式。

mmm:用于显示DateTime中表示的月份的三个字母形式(如"jan")。

mmmm:用于显示完整的月份字符串,正确大写。例如"一月

所以您可以将代码修改为

1
2
string[] formats = {"d MMMM yyyy" };
var dateTime = DateTime.ParseExact(tanggal.Text, formats, new CultureInfo("id-ID"), DateTimeStyles.None);