2013-03-30 22 views
4

在C#中我們有CultureInfo,它會影響ToString()對日期和數字的工作方式 例如。你可以通過這樣做來設置CurrentCulture:有什麼方法可以在飛鏢中本地化數字和日期嗎?

Thread.CurrentThread.CurrentCulture = new CultureInfo("pl-PL");; 

飛鏢上面有沒有等價物?

編輯:

  1. 簡短的回答是:使用國際包裹(感謝所有的答案)
  2. 正如阿蘭·奈特指出下面設置本地化「的線程」是沒有意義的飛鏢,因爲我們不控制線程顯示。
  3. 目前,我寫這篇文章NumberFormating正在進行的工作,據我瞭解
+0

不用編輯您的問題,您可以通過按我答案左側的綠色勾號/勾號圖標(在上/下箭頭下方)將我的答案標記爲「接受」。 –

+0

@KaiSellgren確實 - 問題是,不止一個回答完全回答我的問題(例如,您沒有提及NumberFormat)。無論如何感謝提示:) – tomaszkubacki

+0

你總是可以編輯答案。一般而言,您可以選擇任何您想要的答案,而無論這是我的還是別人的答案。如果沒有答案能夠真正解決您的問題,您可以將問題保持爲「不受歡迎」。 :) –

回答

2

intl圖書館會爲您提供這個,雖然它不會影響toString()的行爲。

下面是一個例子:

添加作爲一個依賴於你的pubspec.yaml

dependencies: 
    intl: any # You might specify some version instead of _any_ 

然後一個代碼示例:

import 'package:intl/intl.dart'; 
import 'package:intl/date_symbol_data_local.dart'; 

main() { 
    initializeDateFormatting("en_US", null).then((_) { 
    var formatter = new DateFormat.yMd().add_Hm(); 
    print(formatter.format(new DateTime.now())); 
    }); 
} 

輸出看起來是這樣的:

07/10/1996 12:08 PM

2

是的,根據以前的條目,國際圖書館是你想要的。您可以設置默認語言環境,或使用withLocale方法在函數中設置它。因爲沒有線程,所以通過線程設置不起作用。另一個主要的區別是,因爲這全部下載到瀏覽器中,所以您不會自動獲得所有的語言環境數據,但必須通過異步初始化步驟來加載數據。這可能會很快切換到使用新的延遲加載功能。

另外,語言環境不會影響系統的toString()操作,而是必須使用DateFormat對象來打印日期。而且由於它仍在進行中,NumberFormat目前還不能正確運行語言環境,但應儘快完成。