C# Windows Phone日期时间异常

C# Windows Phone日期时间异常,c#,windows-phone-7,datetime,C#,Windows Phone 7,Datetime,我目前正在本地化Windows Phone应用程序,但我已开始在DateTime.Now.ToString()上获取索引超出范围的异常 我已尝试更改计算机的时区,但错误仍然存在 我不确定是什么导致了这个问题,也不确定该如何解决它 有什么想法吗?提前谢谢 堆栈跟踪(根据请求添加) 如果日期对于当前区域性的日历无效,则可能发生这种情况 根据:ToString()方法返回当前区域性使用的日历中日期和时间的字符串表示形式。如果当前DateTime实例的值早于Calendar.MinSupported

我目前正在本地化Windows Phone应用程序,但我已开始在DateTime.Now.ToString()上获取索引超出范围的异常

我已尝试更改计算机的时区,但错误仍然存在

我不确定是什么导致了这个问题,也不确定该如何解决它

有什么想法吗?提前谢谢


堆栈跟踪(根据请求添加)



如果日期对于当前区域性的日历无效,则可能发生这种情况

根据:ToString()方法返回当前区域性使用的日历中日期和时间的字符串表示形式。如果当前DateTime实例的值早于Calendar.MinSupportedDateTime或晚于Calendar.MaxSupportedDateTime,则该方法将抛出ArgumentOutOfRangeException


您的应用程序中的当前区域性是什么?

我的应用程序已本地化,我没有使用正确格式的区域性代码,例如,我将使用en而不是en-US或fr而不是fr-fr


如上文所述,当我变得具体化后,
DateTime.Now.ToString()
开始按预期工作。

您真的确定该异常是由DateTime.Now.ToString()引发的吗?这似乎不可能。(请发布异常堆栈跟踪)@PhilippeLeybaert我已经编辑了这个问题以显示堆栈跟踪。您可以向我们显示导致异常的实际代码行(以及它周围的几行代码),所以我们有一个复制错误的最小示例吗?另外:您是否强制使用仿真器/电话设备不支持的区域性?是否也可以添加
btnTransactionClick()
代码?您的计算机的当前日期和区域性是什么?DateTime.Now.Year的值是多少?问题是发生在模拟器上、设备上还是两者都有?我使用默认的en区域性,没有指定US或GB。不确定默认时间是切换到伦敦时间还是美国时间。在本地化的情况下,我如何确保应用程序文化选择不会与手机文化冲突?i、 如果这就是目前正在发生的事情,那么我很困惑,在我出错的情况下,是什么提供了日期?它是应用程序到电话仿真器还是电话仿真器到应用程序还是应用程序到系统?错误到底是从哪里来的?抱怨的是什么?
    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]