2016-11-13 8 views
0

私はペルシア語の日付形式のタイムスタンプを持っていますが、私のコードはローカルホストで正しく動作しますが、リモートサーバー出力をグレゴリオ暦の日付に変更するとC言語で正確にdatetimeを表示するには

string dt = ""; 
PersianCalendar pc = new PersianCalendar(); 
int Year = Convert.ToInt32(ts.Substring(0, 4)); 
int Month = Convert.ToInt32(ts.Substring(4, 2)); 
int Day = Convert.ToInt32(ts.Substring(6, 2)); 
int Hour = Convert.ToInt32(ts.Substring(8, 2)); 
int Minute = Convert.ToInt32(ts.Substring(10, 2)); 
int Second = Convert.ToInt32(ts.Substring(12, 2)); 

dt = new DateTime(Year, Month, Day, Hour, Minute, Second, 0, pc).ToString("dddd dd MMMM yyyy HH:mm:ss", CultureInfo.CreateSpecificCulture("fa-IR")); 

出力iは期待このコードは、(ローカルホストで)である:

شنبه22آبان1395午後01時43分10秒

と遠隔SERで出力

شنبه12نوامبر2016夜01時43分10秒

版私はそれが正常に動作し何をすべき?

答えて

1

DateTimeコンストラクタのcalendarパラメータは、カレンダーの結果を指示しない整数値を解釈するために使用されます。あなたが書いたコードは文化に依存しています。私たちのシステムで正しい文化を使わないので、イランでは良い習慣ではありません。私の助言は、次のようなものを使用することです:

public string GetPersianDateString(DateTime date) 
{ 
    PersianCalendar pc = new PersianCalendar(); 
    string dayOfWeek; 
    switch (pc.GetDayOfWeek(date)) 
    { 
     case DayOfWeek.Sunday: 
      dayOfWeek = "یکشنبه"; 
      break; 
     case DayOfWeek.Monday: 
      dayOfWeek = "دوشنبه"; 
      break; 
     case DayOfWeek.Tuesday: 
      dayOfWeek = "سه شنبه"; 
      break; 
     case DayOfWeek.Wednesday: 
      dayOfWeek = "چهارشنبه"; 
      break; 
     case DayOfWeek.Thursday: 
      dayOfWeek = "پنج شنبه"; 
      break; 
     case DayOfWeek.Friday: 
      dayOfWeek = "جمعه"; 
      break; 
     case DayOfWeek.Saturday: 
      dayOfWeek = "شنبه"; 
      break; 
     default: 
      dayOfWeek = ""; 
      break; 
    } 
    var day = pc.GetDayOfMonth(date).ToString(); 
    string month; 
    switch (pc.GetMonth(date)) 
    { 
     case 1: 
      month = "فروردین"; 
      break; 
     case 2: 
      month = "اردیبهشت"; 
      break; 
     case 3: 
      month = "خرداد"; 
      break; 
     case 4: 
      month = "تیر"; 
      break; 
     case 5: 
      month = "مرداد"; 
      break; 
     case 6: 
      month = "شهریور"; 
      break; 
     case 7: 
      month = "مهر"; 
      break; 
     case 8: 
      month = "آبان"; 
      break; 
     case 9: 
      month = "آذر"; 
      break; 
     case 10: 
      month = "دی"; 
      break; 
     case 11: 
      month = "بهمن"; 
      break; 
     case 12: 
      month = "اسفند"; 
      break; 
     default: 
      month = ""; 
      break; 
    } 
    var year=pc.GetYear(date).ToString(); 
    return dayOfWeek + " " + day + " " + month + " " + year + " " + date.ToShortTimeString(); 
} 

これは単なる草稿であり、より整理されたコードを書くことができます。

+0

これは培養に依存します。これはコードではなく結果を正しくレンダリングするWindows設定です。他の国の人々は、どこに住んでいるのか、フランス語を選択するのか、スペイン語をスペイン語にするのかによって異文化を選びますが、イラン人はあらゆる種類のものを選びます。ほとんどの米国英語。 – Emad

関連する問題