0

Windows Phone中的本地消息应用8个显示日期时间这样的:当我使用的String.Format(格式日期时间”如何像本地消息的应用程序在Windows Phone应用程序格式化日期时间

4/3, 8:31p 

12/25, 10:01a 

{0:d} {0:T】“),我得到了这些:

4/3/2013 8:31 PM 

12/25/2012 10:01 AM 

我怎样才能使它尽量精简的本地消息应用程序?

+0

'DateTime.Now.ToString(“M/d,h:mm t”)'? – Damith 2013-04-04 03:51:16

+0

我忘了提及,我希望它能与不同的国家合作。 – Sharkman 2013-04-04 04:26:21

回答

4

这个表示没有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模式。对于所有文化而言,这并不是完美的,但至少当你以一种你从未想到的方式创造日期和时间的文化时,你不会得到一个不愉快的惊喜!

相关问题