C# DateTimeOffset格式,并获得与moment.js相同的输出
我可以使用以下模式在moment.js中格式化日期:C# DateTimeOffset格式,并获得与moment.js相同的输出,c#,momentjs,C#,Momentjs,我可以使用以下模式在moment.js中格式化日期: MMMM Do YYYY, h:mm:ss a 它将返回: January 1st 0001, 12:00:24 am date.ToString("MMMM Do YYYY, h:mm:ss a") > January Do YYYY, 12:00:00 a 但是,对C#DateTimeOffset执行相同操作将返回: January 1st 0001, 12:00:24 am date.ToString
MMMM Do YYYY, h:mm:ss a
它将返回:
January 1st 0001, 12:00:24 am
date.ToString("MMMM Do YYYY, h:mm:ss a")
> January Do YYYY, 12:00:00 a
但是,对C#DateTimeOffset执行相同操作将返回:
January 1st 0001, 12:00:24 am
date.ToString("MMMM Do YYYY, h:mm:ss a")
> January Do YYYY, 12:00:00 a
我想知道如何实现相同的输出?您可以安装nuget软件包并执行以下操作:
date.ToString("MMMM dd")+ GetSuffix(date.Day) + date.ToString(" yyyy, h:mm:ss a")
string GetSuffix(int day){
return (day % 10 == 1 && day != 11) ? "st"
: (day % 10 == 2 && day != 12) ? "nd"
: (day % 10 == 3 && day != 13) ? "rd"
: "th";
}
date.ToString($"MMMM \"{date.Day.Ordinalize()}\" yyyy, h:mm:ss tt")
这是没有人性化的,您可以为
日期时间偏移量
创建相同的函数,它的工作原理相同
public static string ToDisplayDate(DateTime date)
{
int day = date.Day;
string dayStringOrdinal = day +
((day % 10 == 1 && day != 11) ? "st"
: (day % 10 == 2 && day != 12) ? "nd"
: (day % 10 == 3 && day != 13) ? "rd" : "th");
return date.ToString("MMMM DAY, h:mm:ss tt").Replace("DAY", dayStringOrdinal);
}
输出:
August 13th, 08:35:58 AM
查看.NET中日期格式的文档。