C# ToSortDateString()和CultureInfo.InvariantCulture
我想把波斯日期转换成公历日期。我使用这个代码C# ToSortDateString()和CultureInfo.InvariantCulture,c#,asp.net-4.6,C#,Asp.net 4.6,我想把波斯日期转换成公历日期。我使用这个代码 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.ConvertToLati
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);
两台服务器有什么不同?
你能帮我吗?你说你需要使用
CultureInfo.InvariantCulture
使它在两台服务器上都能工作,然后你问“两台服务器有什么不同”
我想说不同的是文化
您可以通过在web.config中添加全球化行来设置应用文化:
<configuration>
<system.web>
<globalization uiCulture="[uiculture]" culture="[culture]" />
是所有不同区域性的列表。您说需要使用
CultureInfo.InvariantCulture
使其在两台服务器上都能工作,然后您会问“两台服务器有什么不同”
我想说不同的是文化
您可以通过在web.config中添加全球化行来设置应用文化:
<configuration>
<system.web>
<globalization uiCulture="[uiculture]" culture="[culture]" />
是所有不同文化的列表。什么是“不起作用”的意思?您还可以给出一些示例输入和调用
GetComponentDate
的相关输出吗?什么是Persia.DateType.Gregorian
?调用ToString
本身不应该作为语句执行任何操作。。。什么是dt
?现在这里缺少很多信息。我更新了代码。在一台服务器上,当我只使用GetComponentDate方法时,我可以转换波斯语日期,但在另一台服务器上,当我想将音乐会日期转换为字符串时,我应该使用CultureInfo.InvariantCulture。两台服务器有什么不同?波斯号是什么?你需要给我们提供一个。我们需要能够运行你的代码。现在还不清楚出了什么问题-我怀疑这与你向我们展示的代码无关。如果您硬编码一个DateTime
值(而不是使用该代码),您会看到相同的结果吗?(请注意,捕获所有这样的异常是处理无效输入的一种非常丑陋的方式,但这是另一回事。)我强烈怀疑您的一台服务器使用的是使用非公历系统的默认区域性,而另一台则不是。如果您想要使用特定日历的特定格式,那么指定区域性是完全合理的……什么是“不起作用”呢?您还可以给出一些示例输入和调用GetComponentDate
的相关输出吗?什么是Persia.DateType.Gregorian
?调用ToString
本身不应该作为语句执行任何操作。。。什么是dt
?现在这里缺少很多信息。我更新了代码。在一台服务器上,当我只使用GetComponentDate方法时,我可以转换波斯语日期,但在另一台服务器上,当我想将音乐会日期转换为字符串时,我应该使用CultureInfo.InvariantCulture。两台服务器有什么不同?波斯号是什么?你需要给我们提供一个。我们需要能够运行你的代码。现在还不清楚出了什么问题-我怀疑这与你向我们展示的代码无关。如果您硬编码一个DateTime
值(而不是使用该代码),您会看到相同的结果吗?(请注意,捕获所有这样的异常是处理无效输入的一种非常丑陋的方式,但这是另一回事。)我强烈怀疑您的一台服务器使用的是使用非公历系统的默认区域性,而另一台则不是。如果您想要使用特定日历的特定格式,那么指定区域性是完全合理的……为什么在第一台服务器中我不使用CultureInfo.InvariantCulture和代码运行良好?如何在服务器中设置区域性?我搜索了很多。我在webconfig中使用,但在.ascx页面中无效。我还在Gloabal.ascx中编写了Thread.CurrentThread.CurrentCulture,但这不起作用。我在哪里可以比较两台服务器中的Culture?我测试了这两台服务器。但它没有任何作用effect@FatemeJafari您能复制/粘贴您在web.config中插入的确切行吗?为什么在第一台服务器中我不使用CultureInfo.InvariantCulture和代码运行良好吗?如何在服务器中设置区域性?我搜索了很多。我在webconfig中使用,但在.ascx页面中无效。我还在Gloabal.ascx中编写了Thread.CurrentThread.CurrentCulture,但这不起作用。我在哪里可以比较两台服务器中的Culture?我测试了这两台服务器。但它没有任何作用effect@FatemeJafari你能复制/粘贴你在web.config中插入的那一行吗?