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

本文关键字:日期 格式化 | 更新日期: 2023-09-27 18:27:52

我正在创建一个自定义类型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();

对于所有的培养

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

更多信息,请访问http://msdn.microsoft.com/en-us/library/system.datetime.dayofweek.aspx