【问题标题】:How to set DateTime format throughout the entire application in UWP?如何在 UWP 的整个应用程序中设置 DateTime 格式?
【发布时间】:2016-07-11 19:36:29
【问题描述】:

我可以通过使用获取当前文化的日期时间格式

Windows.Globalization.DateTimeFormatting.DateTimeFormatter dtf = new DateTimeFormatter("shortdate",new[] { "en-US"}, "US", CalendarIdentifiers.Gregorian, ClockIdentifiers.TwelveHour);

但我想设置日期时间格式,特别是日期格式为 MM/dd/yy。 如何在整个应用程序中实现这一点。

【问题讨论】:

    标签: c# windows-runtime uwp


    【解决方案1】:

    但我想设置日期时间格式,特别是日期格式为 MM/dd/yy。

    如果我理解正确的话。您可以更改格式模式模板,如下所示:

    Windows.Globalization.DateTimeFormatting.DateTimeFormatter dateFormatter = new DateTimeFormatter("{month.integer(2)}/{day.integer(2)}/{year.abbreviated}", new[] { "en-US" }, "US", CalendarIdentifiers.Gregorian, ClockIdentifiers.TwelveHour);
    

    它会得到如下输出:07/08/16。有关格式模板的详细信息,您可以参考this document格式模式字段

    如何在整个应用程序中实现这一点。

    您可以通过将其保存到App.Resources 来全局存储此格式化程序,如下所示:

    OnLaunch内部App.Xaml.cs的方法:

    protected override void OnLaunched(LaunchActivatedEventArgs e)
    {
        ...
        var dateFormatter = new DateTimeFormatter("{month.integer(2)}/{day.integer(2)}/{year.abbreviated}", new[] { "en-US" }, "US", CalendarIdentifiers.Gregorian, ClockIdentifiers.TwelveHour);
        this.Resources.Add("dateFormatter", dateFormatter);
        ...
    }
    

    然后您可以通过如下代码在应用中的任何位置获取它:

    var formater = (DateTimeFormatter)App.Current.Resources["dateFormatter"];
    var timeStr=formater.Format(DateTime.Now);
    

    更新: 对于DatePicker 控件,您可以手动设置 DayFormat、MonthFormat 和 YearFormat,如下所示:

    <DatePicker DayFormat="{}{day.integer(2)}" MonthFormat="{}{month.integer(2)}" YearFormat="{}{year.abbreviated(2)}"></DatePicker>
    

    对于 CalendarDatePicker,您可以手动设置 DateFormat 属性,如下所示:

    <CalendarDatePicker DateFormat="{}{day.integer(2)}/{month.integer(2)}/{year.abbreviated(2)}" ></CalendarDatePicker>
    

    【讨论】:

    • 我如何在默认情况下为所有 DatePicker、CalendarDatePickers 应用这个?
    • 你不能默认为所有的 DatePickers 和 CalendarDatePickers 设置它。您只能手动设置DatePickersCalendarDatePickersDatePickersDateFormatDayFormatMonthFormatYearFormat 属性。我会更新答案。
    • 有什么方法可以按特定顺序排列它们吗?像 MM/dd/yyyy。因为默认情况下这采用设备的格式。
    • 据我所知,目前没有不改变系统设置的方法。除非您想创建自己的 DatePicker 控件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多