ToshortDateString() и CultureInfo.InvariantCulture

Я хочу преобразовать дату Персии в григорианскую дату. Я использую этот код.

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);

чем отличаются два сервера? вы не могли бы мне помочь?

1 ответ

Вы говорите, что вам нужно использовать CultureInfo.InvariantCulture для того, чтобы заставить его работать на обоих серверах, а затем вы спрашиваете "что отличается на двух серверах".

Я бы сказал, что отличается это культура.

Вы можете установить свою культуру приложения, добавив строку глобализации в ваш web.config:

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

замещать [uiculture] а также [culture] с точными значениями.

Например, для культуры США:

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

Вот список всех разных культур.

Другие вопросы по тегам