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模式。對於所有文化而言,這並不是完美的,但至少當你以一種你從未想到的方式創造日期和時間的文化時,你不會得到一個不愉快的驚喜!

相關問題