Xamarin.ios 不是给定区域性的有效日历。参数名称:值

Xamarin.ios 不是给定区域性的有效日历。参数名称:值,xamarin.ios,xamarin-forms-4,Xamarin.ios,Xamarin Forms 4,这是我的设想。我构建了xamarin表单应用程序。当用户设备语言为英语时,它可以正常工作。但使用阿拉伯语。他打开的任何包含DatePicker或datetime的页面应用程序都会崩溃。请提供任何帮助。使用图像选择器的日期值时,请尝试指定区域设置 var dateFormatter = new NSDateFormatter { DateFormat = _dateFormatString

这是我的设想。我构建了xamarin表单应用程序。当用户设备语言为英语时,它可以正常工作。但使用阿拉伯语。他打开的任何包含DatePicker或datetime的页面应用程序都会崩溃。请提供任何帮助。

使用图像选择器的日期值时,请尝试指定区域设置

               var dateFormatter = new NSDateFormatter
                {
                    DateFormat = _dateFormatString
                };

                var enLocale = new NSLocale("en_US");
                dateFormatter.Locale = enLocale;

                sender.Text = dateFormatter.ToString(modalPicker.DatePicker.Date);

使用图像选择器中的日期值时,请尝试指定区域设置

               var dateFormatter = new NSDateFormatter
                {
                    DateFormat = _dateFormatString
                };

                var enLocale = new NSLocale("en_US");
                dateFormatter.Locale = enLocale;

                sender.Text = dateFormatter.ToString(modalPicker.DatePicker.Date);

这是一个已知的Xamarin错误,自2015年我报告以来,他们无法修复。 简言之,linker认为您不需要其他日历,而需要默认日历。 即使项目设置指定它支持这些语言。 为了解决这个问题,请在代码中创建日历。(强制链接器包含它们) 并从AppDelegate.cs或其他Famarin表单app init方法调用它:

private static void PreventLinkerFromStrippingCommonLocalizationReferences()
{
        _ = new System.Globalization.GregorianCalendar();
        _ = new System.Globalization.PersianCalendar();
        _ = new System.Globalization.UmAlQuraCalendar();
        _ = new System.Globalization.ThaiBuddhistCalendar();
}

这是一个已知的Xamarin bug,自2015年我报告以来,他们无法修复。 简言之,linker认为您不需要其他日历,而需要默认日历。 即使项目设置指定它支持这些语言。 为了解决这个问题,请在代码中创建日历。(强制链接器包含它们) 并从AppDelegate.cs或其他Famarin表单app init方法调用它:

private static void PreventLinkerFromStrippingCommonLocalizationReferences()
{
        _ = new System.Globalization.GregorianCalendar();
        _ = new System.Globalization.PersianCalendar();
        _ = new System.Globalization.UmAlQuraCalendar();
        _ = new System.Globalization.ThaiBuddhistCalendar();
}

与其他国家和地区不同,阿拉伯语书写的方向是从右向左。所以你应该让你的应用程序支持国际化。请参考链接。@LucasZhang MSFT供你参考。与其他国家和地区不同,阿拉伯语书写是从右向左的。因此,您应该使您的应用程序支持国际化。请参阅链接。@LucasZhang MSFT以供参考。这将导致您的所有字符串以不寻常的美国格式MM/DD/YYYY显示。(世界上大多数订单的重要性都是增加/减少的。)这将导致您的所有字符串都以不寻常的美国格式MM/DD/YYYY显示。(世界上大多数订单的重要性是递增/递减的。)