C# 如何在Windows Phone应用程序(如本机消息传递应用程序)中格式化日期时间

C# 如何在Windows Phone应用程序(如本机消息传递应用程序)中格式化日期时间,c#,silverlight,windows-phone-7,windows-phone-8,windows-phone,C#,Silverlight,Windows Phone 7,Windows Phone 8,Windows Phone,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 我怎样才能使它像本机消息传递应用程序一样简洁?此表示法不适用 虽然您可以简单地使用此选项: string.Format("{0:M/d, h:mmt}"); 。。。当你的应用程序在一个切换日和月顺

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
我怎样才能使它像本机消息传递应用程序一样简洁?

此表示法不适用

虽然您可以简单地使用此选项:

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
模式之间切换。它并不适合所有的文化,但至少当你遇到一种以你从未预料到的方式编排日期和时间的文化时,你不会感到不快的惊讶

此表示法没有任何限制

虽然您可以简单地使用此选项:

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
模式之间切换。它并不适合所有的文化,但至少当你遇到一种以你从未预料到的方式编排日期和时间的文化时,你不会感到不快的惊讶

DateTime.Now.ToString(“M/d,h:mm t”)
?我忘了提到,我希望它能与不同的国家合作。
DateTime.Now.ToString(“M/d,h:mm t”)
?我忘了提到,我希望它能与不同的国家合作。