如何将非日期值格式化为日期值

时间:2012-03-14 16:43:20

标签: c# .net vb.net types formatting

我正在创建一个自定义类型DateOnly,它实际上是DateTime,其中删除了时间部分。

我遇到了一个小问题,我希望将新类型的值格式化为日期:

Dim startDate As New DateOnly(2012, 1, 2)
Debug.WriteLine(String.Format("{0:ddd}", startDate))

此输出:02/01/2012,我希望能够将其格式化为Mon

注意:我没有包含DateOnly类型的任何代码(为了简单起见),但我可以根据要求添加

2 个答案:

答案 0 :(得分:4)

我设法通过在我的自定义类型中实现IFormattable来回答我自己的问题:

Public Overloads Function ToString(fmt As String, provider As IFormatProvider) As String Implements IFormattable.ToString
    Return String.Format("{0:" + fmt + "}", _dateValue)
End Function

这似乎可以解决问题。

答案 1 :(得分:1)

适合我(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();

所有文化

System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.DayNames[(int) 
                System.DateTime.Now.DayOfWeek];

http://msdn.microsoft.com/en-us/library/system.datetime.dayofweek.aspx

的更多信息