【问题标题】:ToshortDateString() and CultureInfo.InvariantCultureToshortDateString() 和 CultureInfo.InvariantCulture
【发布时间】:2017-11-19 23:56:57
【问题描述】:

我想将波斯日期转换为公历日期。我使用此代码。

public static void GetDate()
 {
String persianDate="1384/03/15"
Datetime dt= GetComponentDate(persianDate);
 }

 DateTime GetComponentDate(string fdate)
{
    DateTime edate;
    int year = int.Parse(Persia.Number.ConvertToLatin(fdate.Split('/')[0]));
    int month = int.Parse(Persia.Number.ConvertToLatin(fdate.Split('/')[1]));
    int day = int.Parse(Persia.Number.ConvertToLatin(fdate.Split('/')[2]));
    try
    {
        System.Globalization.PersianCalendar x = new System.Globalization.PersianCalendar();
        DateTime dt = x.ToDateTime(year, month, day, 0, 0, 0, 0, 0);

        return dt;

    }
    catch
    {
    }
    return DateTime.MinValue;
}

在服务器中,此方法运行良好,输出为 "17/6/2017" 。但在另一台服务器中,此方法不起作用并且输出 =“15/03/1384”,我必须在使用 GetComponentDate 后使用此代码。

((DateTime)dt).ToString(CultureInfo.InvariantCulture);

两台服务器有什么不同? 你能帮帮我吗?

【问题讨论】:

  • “不工作”是什么意思?您能否提供一些示例输入和调用GetComponentDate 的相关输出?
  • 什么是Persia.DateType.Gregorian?调用 ToString 本身不应该作为一个声明做任何事情...... dt 是什么?目前这里缺少很多信息。
  • 我更新了我的代码。在服务器中,当我仅使用 GetComponentDate 方法时,我可以转换波斯日期,但在另一台服务器中,当我想将音乐会日期转换为字符串时,我应该使用 CultureInfo.InvariantCulture。两台服务器有什么不同?
  • 什么是Persia & Persia.Number?您需要向我们提供minimal reproducible example。我们需要能够运行您的代码。
  • 目前还不清楚出了什么问题 - 我怀疑这与您向我们展示的代码无关。如果您硬编码 DateTime 值(而不是使用该代码),您会看到相同的结果吗? (请注意,捕获像这样的所有异常是处理无效输入的一种非常丑陋的方式,但这是另一回事。)我强烈怀疑您的一个服务器正在使用使用非公历系统的默认文化,而另一个不是。如果您想要使用特定日历的特定格式,那么指定文化是完全合理的......

标签: c# asp.net-4.6


【解决方案1】:

您说您需要使用CultureInfo.InvariantCulture 才能使其在两台服务器上运行,然后您问“两台服务器有什么不同”。

我想说不同的是文化

您可以通过在 web.config 中添加全球化行来设置您的应用文化:

<configuration>
    <system.web>
        <globalization uiCulture="[uiculture]" culture="[culture]" />

用准确的值替换 [uiculture][culture]

例如美国文化:

<globalization uiCulture="en-US" culture="en-US"/>

Here 是所有不同文化的列表。

【讨论】:

  • 为什么在第一台服务器上我不使用 CultureInfo.InvariantCulture 并且代码运行良好?如何在服务器中设置文化?
  • 我搜索了很多。我在 webconfig 中使用 但它在 .ascx 页面中不起作用我也在 Gloabal.ascx 中写了 Thread.CurrentThread.CurrentCulture 但这也不起作用
  • 在哪里可以比较两台服务器中的文化?
  • 我测试了他们两个。但它没有任何效果
  • @FatemeJafari 你能复制/粘贴你在 web.config 中插入的确切行吗?
猜你喜欢
  • 1970-01-01
  • 2010-12-02
  • 1970-01-01
  • 2012-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多