将System.Globalization.DateTimeFormatInfo短日期格式转换为Windows.Globalization.DateTimeFormatting.DateTimeFor
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将System.Globalization.DateTimeFormatInfo短日期格式转换为Windows.Globalization.DateTimeFormatting.DateTimeFor相关的知识,希望对你有一定的参考价值。
我在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属性,可以处理所有这些。我尝试了语言属性,但没有明显的效果。
是的,您使用CalendarDatePicker的DateTimeFormatter属性设置CalendarDatePicker的DateFormat,该属性告诉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
对于任何在这里冒险的人来说,这至少会将日期格式和一周的第一天本地化,但它不会本地化月份的名称:
ShortTimePattern
(SystemDayOfWeekToWindowsDayOfWeekConverter的实现是从System.DayOfWeek到Windows.Globalization.DayOfWeek的简单转换)
以上是关于将System.Globalization.DateTimeFormatInfo短日期格式转换为Windows.Globalization.DateTimeFormatting.DateTimeFor的主要内容,如果未能解决你的问题,请参考以下文章
Javascript 将正则表达式 \\n 替换为 \n,将 \\t 替换为 \t,将 \\r 替换为 \r 等等