【问题标题】:How to format date time in a Windows Phone app like the native messaging app如何在 Windows Phone 应用程序(如本机消息应用程序)中格式化日期时间
【发布时间】:2013-04-04 03:34:40
【问题描述】:

Windows Phone 8 中的本机消息传递应用程序显示如下日期时间:

4/3, 8:31p

12/25, 10:01a

当我使用 String.Format("{0:d} {0:t}") 格式化日期时间时,我得到了这些:

4/3/2013 8:31 PM

12/25/2012 10:01 AM

如何让它像原生消息应用一样简洁?

【问题讨论】:

  • DateTime.Now.ToString("M/d,h:mm t") ?
  • 我忘了说,我希望它适用于不同的国家。

标签: c# silverlight windows-phone-7 windows-phone-8 windows-phone


【解决方案1】:

此表示没有standard date and time format string

虽然你可以简单地使用这个:

string.Format("{0:M/d, h:mmt}");

...当您的应用程序用于切换日期和月份顺序的文化时,这将无济于事。

最接近的解决方案可能是采用您当前文化的格式字符串并进行相应修改,即:

var culture = (CultureInfo)CultureInfo.CurrentUICulture.Clone();
// Make the AM/PM designators lowercase
culture.DateTimeFormat.AMDesignator = culture.DateTimeFormat.AMDesignator.ToLower();
culture.DateTimeFormat.PMDesignator = culture.DateTimeFormat.PMDesignator.ToLower();

var dDateFormatPattern = culture.DateTimeFormat.ShortDatePattern;
var tDateFormatPattern = culture.DateTimeFormat.ShortTimePattern;

var dateCompact = dDateFormatPattern.Replace("yyyy", "")
    .Replace("MM", "M").Replace("dd", "d").Replace(" ", "")
    .Trim(culture.DateTimeFormat.DateSeparator.ToArray());

var timeCompact = tDateFormatPattern
    .Replace("hh", "h").Replace("tt", "t").Replace(" ", "");

Console.WriteLine(DateTime.Now.ToString(dateCompact + " " + timeCompact, culture));

>>> 4/4 3:03p

... 或者,您可以只检查CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern 的值并在D/M 模式和M/D 模式之间切换。它不会对所有文化都完美,但至少当您遇到一种以您意想不到的方式格式化日期和时间的文化时,您不会感到不愉快!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-26
    • 2014-10-11
    • 2015-12-25
    • 1970-01-01
    • 2016-02-12
    • 2014-04-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多