如何在c#中显示正确的日期时间?
本文关键字:日期 时间 显示 | 更新日期: 2023-09-27 18:17:44
我有一个波斯语日期格式的时间戳,我想转换为完整的波斯语日期,我的代码在本地主机中正常工作,但当将其上传到远程服务器输出更改为公历日期
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"));
输出我期望的代码(在localhost中):
شنبه 22 آبان 1395 13:43:10
和远程服务器的输出
شنبه 12 نوامبر 2016 13:43:10
我该怎么做才能正常工作?
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();
}
这只是一个草稿,你可以写出更有组织的代码。