2016-12-02 78 views
0

我的系统时间格式为dd-MMM-yy(02年12月2日)。我想将其转换为的格式是"yyyy/MM/dd"。我基本已经与所有我的系统提供的其他日期时间格式玩耍,这是解析的语句,我要指出的是所有这些工作(除了这) -将系统时间格式的DateTime对象格式化为所需格式

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); 

但是这并未” t适用于上述dd-MMM-yy格式。有人能告诉我我在这里做错了吗?

(边栏-Is那里,我可以这样写上面的代码更有效的方式?)

+1

'now.ToString('是它还是'now_value.ToString(' –

+0

now_value。错字。谢谢。 – wave5459

回答

2

您不必为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"); 
+0

我编辑了我所需的格式。但让我试试这个编辑后的格式。 – wave5459

+0

你的例子中使用了什么'provider'? – Damith

+0

提供者就像你所想象的那样 - “CultureInfo.InvariantCulture”。 – wave5459

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; 
+0

我想避免一种特定的文化。因此我使用了InvariantCulture。感谢您的回答:) – wave5459

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)); 
0

你可以试试这个:

datetime yourdatetime = new datetime(); 
string converteddatetime = yourdatetime.toString("yyyy/MM/dd"); 
+0

这总是返回“0001-01-01”。 – wave5459

+0

它只是一个例子abhiii5459。 –

+0

只能使用字符串converteddatetime = yourdatetime.toString(“yyyy/MM/dd”); –