将DateTime对象从System时间格式格式化为所需格式

时间:2016-12-02 06:31:28

标签: c# datetime

我的系统时间格式为dd-MMM-yy(02-Dec-16)。我想将其转换为"yyyy/MM/dd"的格式。我基本上一直在玩我的系统提供的所有其他日期时间格式,这是我发现的解析语句适用于所有这些格式(除此之外) -

CultureInfo provider = CultureInfo.InvariantCulture;
string date_format = "yyyy/MM/dd HH:mm:ss tt";
DateTime now_value = DateTime.ParseExact(DateTime.Now.ToString(date_format), date_format, provider);
return now_value.ToString(date_format); 

但这对上述dd-MMM-yy格式不起作用。有人可以告诉我这里我做错了什么吗?

(补充工具栏 - 我是否可以使用更有效的方式在上面编写代码片段?)

4 个答案:

答案 0 :(得分:2)

您不需要将DateTime转换为字符串,然后转换回DateTime并再次返回字符串,如果您有DateTime输入,只需调用ToString,格式如下

 string dt =DateTime.Now.ToString("yyyy/MMM/dd", CultureInfo.InvariantCulture);

为您的例子:

DateTime now_value = DateTime.ParseExact("02-Dec-16", "dd-MMM-yy", System.Globalization.CultureInfo.InvariantCulture);
 return  now_value.ToString("yyyy/MM/dd"); 

答案 1 :(得分:1)

试试这个:

string date_format = "yyyy-MMM-dd";
string date_now = DateTime.Now.ToString(date_format,CultureInfo.CreateSpecificCulture("en-US"));
return date_now;

即使这也应该有效:

string date_format = "yyyy-MMM-dd";
string date_now = DateTime.Now.ToString(date_format);
return date_now;

答案 2 :(得分:0)

我认为最好的方法是为多种日期格式创建扩展方法,

var inputDate = "02-Dec-2016";
string[] availaible_input_date_format = { "dd-MMM-yyyy", "dd/MMM/yyyy" }; // add as many formats availible
var date_format = "yyyy/MMM/dd";
DateTime outputDate;
DateTime.TryParseExact(inputDate, availaible_input_date_format, null, DateTimeStyles.None, out outputDate);
Console.WriteLine(outputDate.ToString(date_format));

答案 3 :(得分:0)

你可以试试这个:

A