我需要根据用户LocaleId提供30-01(1月30日)的短日期。必须根据本地用户正确显示日期。预期可能的日期格式排列的例子有:30-01,01-30,30 / 01,01 / 30等。
注1:我不希望年份出现在日期字符串中。 注2:您可以假设我们已经知道LocalId。 注3:MyDate.ToString(“dd / MM”)不是我正在寻找的答案,因为它不考虑本地。
答案 0 :(得分:2)
“MyDate.ToString(”dd / MM“)不是我正在寻找的答案,因为它不考虑本地”
实际上确实考虑了/
is a custom format specifier以来的本地日期分隔符。
DateTime dt = new DateTime(2014, 01, 30);
string result = dt.ToString("dd/MM"); // 30.01. for example in germany
但是既然你想要正确的订单(月/日或反之亦然),这是我想到的最好的:
DateTime dt = new DateTime(2014, 01, 30);
var dfi = DateTimeFormatInfo.CurrentInfo;
var patternWithoutYear = dfi.ShortDatePattern
.Split(new[]{ dfi.DateSeparator }, StringSplitOptions.None)
.Where(token => !token.Contains("yy"));
string result = dt.ToString(string.Join(dfi.DateSeparator, patternWithoutYear));