如何在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

我该怎么做才能正常工作?

如何在c#中显示正确的日期时间?

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

这只是一个草稿,你可以写出更有组织的代码。