2012-08-24 237 views
3

可能重复:
How to convert DateTime object to dd/mm/yyyy in C#?转换日期时间

我是新来的C#和希望有人可以帮我清理一些代码。

我有以下方法将日期时间转换为自定义事件字符串,例如30th of Jan 2012转化为201201(忽略日)

public ConvertToEventDate(DateTime date) 
{ 
    var year = date.Year.ToString(); 
    var month = date.Month.ToString(); 
    month = month.Length == 2 ? month : "0" + month; 
    return year + month; 
} 

我在想,如果有这样的转换更好的方法。

+0

以上不会编译 - 函数签名中没有定义返回类型。 – Oded

回答

2

我会做到这一点;

public string ConvertToEventDate(DateTime date) 
{ 
    return date.ToString("yyyyMM"); 
} 

你也可以把它放到这样的扩展方法中;

public static class ExtenstionMethods 
{ 
    public static string ToEventDate(this DateTime date) 
    { 
     return date.ToString("yyyyMM"); 
    } 
} 

然后称它为ike这个;

DateTime date = new DateTime(2012, 30, 1); 

    date.ToEventDate(); 

与此相对;

ConvertToEventDate(date); 
+0

我喜欢扩展方法的想法,因为它被从全部代码中调用,所以宁愿保持它的集中式 – user1622452

2
public string ConvertToEventDate(DateTime date) 
{ 
    return date.ToString("yyyyMM", CultureInfo.InvariantCulture); 
} 

看一看在custom formatting strings docs

+0

我不喜欢上面的编辑,我没有看到把它放在一个函数中。只需MyDateTimeObject.ToString(“yyyyMM”)更容易阅读,将其封装在一个新函数中不会添加任何imo。 – Dan

+0

因为OP把它放在一个函数中,所以它在函数中。 – Oded

+0

OP要求更干净的代码。我认为调用date.ToString(“yyyyMM”)比调用ConvertToEventDate(date)更清晰明了。 – Dan

0

尝试

return date.ToString("yyyyMM"); 
+1

'Format'?你的意思是'ToString'? – Oded

+0

是的,谢谢。 – tomsv

2

也有人建议ToString("yyyyMM")这是基本上有 - 但我会建议你可能要指定固定区域性。否则,如果该线程的当前文化使用非格里历日历,那么最终可能会有一个月/一年没有预料到。所以,我会用:

string text = date.ToString("yyyyMM", CultureInfo.InvariantCulture); 

详细信息,如果您想以后更改的确切格式见custom date and time format strings的文档。