You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MAUI中如何在标签以多语言显示日期?代码显示en-US问题排查

解决MAUI中波斯语(fa-IR)日期格式不生效的问题

可能的原因及对应解决方案

1. 项目未配置支持目标区域性

在MAUI项目的.csproj文件中添加支持的区域性配置,确保fa-IR被包含:

<PropertyGroup>
  <!-- 添加需要支持的区域性,用分号分隔 -->
  <SupportedCultures>fa-IR;en-US</SupportedCultures>
  <!-- 设置默认中性语言 -->
  <NeutralLanguage>en-US</NeutralLanguage>
</PropertyGroup>

2. 使用GetCultureInfo替代直接实例化CultureInfo

直接new CultureInfo("fa-IR")可能受系统用户设置影响,改用GetCultureInfo获取标准区域性:

using System.Globalization;

// 获取标准波斯语(伊朗)区域性
var persianCulture = CultureInfo.GetCultureInfo("fa-IR");
// 格式化日期
lbltime.Text = DateTime.Now.ToString("yyyy/MM/dd", persianCulture);

3. 若需显示波斯历日期而非格里高利历

DateTime默认基于格里高利历,若要显示波斯历的年月日,需使用PersianCalendar类转换:

using System.Globalization;

var now = DateTime.Now;
var persianCalendar = new PersianCalendar();
int year = persianCalendar.GetYear(now);
int month = persianCalendar.GetMonth(now);
int day = persianCalendar.GetDayOfMonth(now);
// 格式化为4位年、2位月、2位日
lbltime.Text = $"{year:D4}/{month:D2}/{day:D2}";

4. 平台级强制设置应用文化

部分平台可能需要在启动时显式设置线程文化:

Android(MainActivity.cs)

protected override void OnCreate(Bundle savedInstanceState)
{
    base.OnCreate(savedInstanceState);
    var culture = CultureInfo.GetCultureInfo("fa-IR");
    CultureInfo.DefaultThreadCurrentCulture = culture;
    CultureInfo.DefaultThreadCurrentUICulture = culture;
}

iOS(AppDelegate.cs)

public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
    var culture = CultureInfo.GetCultureInfo("fa-IR");
    CultureInfo.DefaultThreadCurrentCulture = culture;
    CultureInfo.DefaultThreadCurrentUICulture = culture;
    return base.FinishedLaunching(app, options);
}

内容的提问来源于stack exchange,提问作者Shayan T-Master

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 17:05:01