我有一个字符串,它是一种DD/MM/YYYY
样式。(例如:11/07/2018)
我需要将此格式转换为DateTime
格式和YYYY-MM-DD
样式。
我使用DateTime.Parse
尝试过,但不能
if (!String.IsNullOrEmpty(fromDate))
{
frm = DateTime.ParseExact(fromDate, "yyyy-MM-dd", CultureInfo.InvariantCulture, DateTimeStyles.None);
}
else if(!String.IsNullOrEmpty(toDate))
{
todt = DateTime.ParseExact(toDate, "yyyy-MM-dd", CultureInfo.InvariantCulture, DateTimeStyles.None);
}
答案 0 :(得分:3)
您可以在一行代码中完成此操作。
var newDateString = DateTime.ParseExact(myDateString, "dd/MM/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None).ToString("yyyy-MM-dd");
请记住,DateTime
实例是一种没有格式的数据结构。在处理日期和时间时,最好仅在需要提供/输出供人类阅读的值时才还原为人类可读的字符串。对于包括对支持类型的存储系统的持久性(例如关系数据库)的任何其他处理,请将值保留为DateTime
类型。
示例:如果要yyyy-MM-dd
是因为要将其持久化到Sql Server,则应在解析后停止(而不是调用ToString)。然后,您可以将DateTime
实例直接分配给命令参数的Value
属性。
答案 1 :(得分:1)
使用ParseExact
进行转换,然后使用ToString
转换为目标格式:
string dateS = "30/04/2018";
DateTime dateD = DateTime.ParseExact(dateS, "dd/MM/yyyy", System.Globalization.CultureInfo.InvariantCulture);
string dateS2 = dateD.ToString("yyyy-MM-dd");
以下是一个有效的例子:https://dotnetfiddle.net/e0yuZ6