如何将非日期值格式化为日期值
我正在创建一个自定义类型DateOnly
,其实际上是一个DateTime
,其中删除了时间部分。如何将非日期值格式化为日期值
我遇到了,我想格式化我的新类型就像一个日期值一个小问题:
Dim startDate As New DateOnly(2012, 1, 2)
Debug.WriteLine(String.Format("{0:ddd}", startDate))
此输出:02/01/2012
,我希望能够格式化这是Mon
注:我没有任何包括我的代码为DateOnly
类型(让事情变得简单),但我可以补充,如果要求
我已经设法通过我的自定义类型实现IFormattable
回答我的问题:
Public Overloads Function ToString(fmt As String, provider As IFormatProvider) As String Implements IFormattable.ToString
Return String.Format("{0:" + fmt + "}", _dateValue)
End Function
这似乎这样的伎俩。
对我的作品(C#):
DateTime date = new DateTime(2012, 1, 2);
var dateString = String.Format("{0:ddd}", date); //Mon
反正怎么样的下面:
DateTime date = new DateTime(2012, 1, 2);
var dayName= date.DayOfWeek.ToString();
如果DateOnly
是一个DateTime,你可以这样做:
DateOnly.DayOfWeek.ToString();
所有的文化在http://msdn.microsoft.com/en-us/library/system.datetime.dayofweek.aspx
System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.DayNames[(int)
System.DateTime.Now.DayOfWeek];
更多信息
他没有使用DateTime,他有他自己的类,他试图将他的格式应用到名为DateOnly。 – Khan 2012-03-14 16:57:14
他不需要他自己的班级来实现这一点。无论如何,如果他自己的类返回一个DateTime对象,他仍然可以使用.DayOfWeek.ToString(); – 2012-03-14 16:58:33
你的第一个代码使用'DateTime'我使用的是一个自定义的类型'DateOnly','DayOfWeek.ToString'返回'Monday'并且不同于'ddd'它返回'Mon' – 2012-03-14 16:59:25
我猜格式字符串“ddd”(或Date的任何其他格式字符串)只能在DateTime对象上使用。如果您想使用'DateTime'格式代码,您可能想尝试从DateTime – Arun 2012-03-14 16:48:03
uhh中继承新的DateOnly类,并将其转换为'DateTime'。 – dotjoe 2012-03-14 16:48:23
但是,datetime.date已经只返回日期部分..并且当你提到mon时,你是在想一个星期一?你想在星期一格式化所有的日期吗? – gbianchi 2012-03-14 16:50:55