2017-06-17 39 views
0

我想將波斯日期轉換爲公曆日期。我使用這個代碼。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」。但在另一個服務器中,此方法不起作用,並且output =「15/03/1384」,並且在使用GetComponentDate之後我必須使用此代碼。

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

兩臺服務器有什麼不同? 你能幫助我嗎?

+0

「不行」是什麼意思?你也可以**給一些樣本輸入和相關的輸出到'GetComponentDate'調用? – Enigmativity

+0

什麼是'Persia.DateType.Gregorian'?調用'ToString'不應該單獨做任何事情作爲一個陳述......什麼是'dt'?目前有很多信息缺失。 –

+0

我更新了我的代碼。在一臺服務器上,當我只使用方法GetComponentDate時,我可以轉換波斯日期,但在另一臺服務器上,當我想要演唱會日期爲String時,我應該使用CultureInfo.InvariantCulture。兩臺服務器有什麼不同? –

回答

0

你說你需要使用CultureInfo.InvariantCulture才能使它在兩臺服務器上工作,然後你問「兩臺服務器有什麼不同」。

我想說的是不同的是文化

可以通過添加全球化線在你的web.config設置你的應用程序的文化:

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

更換[uiculture][culture]準確值。

E.g美國文化:

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

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

+0

爲什麼在第一臺服務器上我不使用CultureInfo.InvariantCulture並且代碼運行良好?我如何在服務器上設置文化? –

+0

我搜索了很多。我在webconfig中使用但它在.ascx頁面中沒有效果,我也在Gloabal.ascx中寫了Thread.CurrentThread.CurrentCulture,但這不起作用 –

+0

我可以在哪裏比較兩個服務器中的cultutre? –

相關問題