0

現在、Windows Phone アプリケーションのローカライズに取り組んでいますが、DateTime.Now.ToString() で範囲外のインデックス例外が発生し始めました。

コンピューターのタイムゾーンを変更しようとしましたが、エラーが続きます。

この問題の原因や修正方法がわかりません。

何か案は?前もって感謝します!


スタック トレース (リクエストに応じて追加)


    mscorlib.dll!System.Globalization.DateTimeFormatInfo.GetYearMonthPattern(int calID = 1) + 0x25 bytes    
    mscorlib.dll!System.Globalization.DateTimeFormatInfo.InitializeOverridableProperties() + 0x94 bytes 
    mscorlib.dll!System.Globalization.DateTimeFormatInfo.Calendar.set(System.Globalization.Calendar value = {System.Globalization.GregorianCalendar}) + 0x1a8 bytes 
    mscorlib.dll!System.Globalization.DateTimeFormatInfo.DateTimeFormatInfo(System.Globalization.CultureTableRecord cultureTable = {System.Globalization.CultureTableRecord}, System.Globalization.Calendar cal = {System.Globalization.GregorianCalendar}) + 0x29 bytes    
    mscorlib.dll!System.Globalization.CultureInfo.DateTimeFormat.get() + 0x19 bytes 
    mscorlib.dll!System.Globalization.CultureInfo.GetFormat(System.Type formatType = {Name = "DateTimeFormatInfo" FullName = "System.Globalization.DateTimeFormatInfo"}) + 0x22 bytes   
    mscorlib.dll!System.Globalization.DateTimeFormatInfo.CurrentInfo.get() + 0x2a bytes 
    mscorlib.dll!System.DateTime.ToString() 
>   QuickAirtime.dll!QuickAirtime.PaymentSummary.btnTransactionClick(object sender = {System.Windows.Controls.Button}, System.Windows.RoutedEventArgs e = {System.Windows.RoutedEventArgs}) Line 78 + 0x2 bytes C#
    System.Windows.dll!System.Windows.Controls.Primitives.ButtonBase.OnClick() + 0x1f bytes 
    System.Windows.dll!System.Windows.Controls.Button.OnClick() + 0x1f bytes    
    System.Windows.dll!System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(System.Windows.Input.MouseButtonEventArgs e = {System.Windows.Input.MouseButtonEventArgs}) + 0x4e bytes    
    System.Windows.dll!System.Windows.Controls.Control.OnMouseLeftButtonUp(System.Windows.Controls.Control ctrl = {System.Windows.Controls.Button}, System.EventArgs e = {System.Windows.Input.MouseButtonEventArgs}) + 0xc bytes   
    System.Windows.dll!MS.Internal.JoltHelper.FireEvent(System.IntPtr unmanagedObj = 227599168, System.IntPtr unmanagedObjArgs = 227256368, int argsTypeIndex = 169, int actualArgsTypeIndex = 169, string eventName = "M@@4") + 0x115 bytes    
    [External Code] 
4

2 に答える 2

1

私のアプリはローカライズされていて、カルチャ コードを正しい形式で使用していませんでした。たとえば、en-US の代わりに en を使用したり、fr-FR の代わりに fr を使用したりしていました。

上記で説明したように具体的になるとDateTime.Now.ToString()、期待どおりに機能し始めました。

于 2012-06-28T18:05:20.733 に答える
0

これは、日付が現在のカルチャのカレンダーに対して無効である場合に発生する可能性があります。

MSDN のドキュメントによると、ToString () メソッドは、現在のカルチャで使用されているカレンダーの日付と時刻の文字列表現を返します。現在の DateTime インスタンスの値が Calendar.MinSupportedDateTime より前または Calendar.MaxSupportedDateTime より後の場合、メソッドは ArgumentOutOfRangeException をスローします。

アプリの現在の文化は何ですか?

于 2012-06-28T07:36:33.473 に答える