将System.Globalization.DateTimeFormatInfo短日期格式转换为Windows.Globalization.DateTimeFormatting.DateTimeFormatter

问题描述 投票:0回答:2

我在UWP中使用CalendarDatePicker控件。日期的格式应该本地化为用户选择的文化,这不一定与操作系统语言设置相同。我希望日期格式与myCultureInfo.DateTimeFormat.ShortDatePattern(例如mm / dd / yyyy)相同。 CalendarDatePicker公开一个DateFormat属性,该属性的格式应为{month.integer} / {day.integer} / {year.full}。我需要一个用于XAML绑定的转换器。似乎应该有一个简单的方法来做到这一点。

<!-- In XAML -->
<CalendarDatePicker
    FirstDayOfWeek="{x:Bind ViewModel.CalendarFirstDayOfWeek, Mode=OneTime, Converter={StaticResource SystemDayOfWeekToWindowsDayOfWeekConverter}}"
    DateFormat="{x:Bind ViewModel.DateFormat, Mode=OneWay, Converter={StaticResource DateTimeFormatToDateTimeFormatterTemplateConverter}"
    Date="{x:Bind ViewModel.Date, Mode=TwoWay, Converter={StaticResource DateTimeToDateTimeOffsetConverter}}"/>

//Converter
public class DateTimeFormatToDateTimeFormatterTemplateConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, string language)
    {
        //What goes here?
    }

    public object ConvertBack(object value, Type targetType, object parameter, string language)
    {
        throw new NotImplementedException();
    }
}

编辑:理想情况下,CalendarDatePicker只有一个CultureInfo属性,可以处理所有这些。我尝试了语言属性,但没有明显的效果。

localization datetime-format uwp-xaml globalization cultureinfo
2个回答
1
投票

是的,您使用CalendarDatePickerDateTimeFormatter属性设置CalendarDatePickerDateFormat,该属性告诉DateTimeFormatter如何通过提供格式模板或格式模式的字符串来格式化值。 Language属性用于获取或设置适用于CalendarDatePicker的本地化/全球化语言信息。

不同的Language与qazxsw poi qazxsw poi属性也许有不同的日期格式。你可以通过语言en-US和fr-FR看到不同的东西。

shortdate

所以你可能需要使用DateFormat类来获得当前的文化。

对于<StackPanel> <CalendarDatePicker Language="en-US" DateFormat="shortdate"/> <CalendarDatePicker Language="fr-FR" DateFormat="shortdate"/> </StackPanel> 转换,您可以从您的设备设置应用程序获取所有CultureInfo:设置=>时间和语言=>数据和时间=>更改日期和时间格式,在短日期部分,您可以看到那里的所有格式。然后你可以根据DateFormat返回相应的ShortTimePattern字符串。以下是一些代码示例:

DateFormat

0
投票

对于任何在这里冒险的人来说,这至少会将日期格式和一周的第一天本地化,但它不会本地化月份的名称:

ShortTimePattern

(SystemDayOfWeekToWindowsDayOfWeekConverter的实现是从System.DayOfWeek到Windows.Globalization.DayOfWeek的简单转换)

© www.soinside.com 2019 - 2024. All rights reserved.