1
我從SqlServer
日期(以公曆),並把它們放在一個datatable
這樣我就可以顯示它在datagridview
,如何日期從公曆轉換爲沙姆西
但在此之前我告訴他們在DGV,我有將它們轉換成沙姆西在datatable
,
首先我這樣做,用這種方法:
public string PersianDate(DateTime DateTime1)
{
PersianCalendar PersianCalendar1 = new PersianCalendar();
return string.Format(@"{0}/{1}/{2}",
PersianCalendar1.GetYear(DateTime1),
PersianCalendar1.GetMonth(DateTime1),
PersianCalendar1.GetDayOfMonth(DateTime1));
}
而這種代碼:
foreach (DataRow DR in Dtable.Rows)
{
DateTime dt = Convert.ToDateTime(DR["VisitDate"]);
string Pdate = PersianDate(dt);
DR["VisitDate"] = Pdate;
}
,然後設置datatable
到DGV,
但它提供了一次在MM/dd/yyyy格式,我想DD/MM/YYYY
所以這部分增加foeach loop
:
foreach (DataRow DR in Dtable.Rows)
{
DateTime dt = Convert.ToDateTime(DR["VisitDate"]);
string Pdate = PersianDate(dt);
DR["VisitDate"] = Convert.ToDateTime(Pdate).ToString("dd/MM/yyyy");
}
它工作。
但在某些日子像2017年3月20日(30/12/1395)=>葉以來, 甚至在2020年3月19日(29/12/1398)=>不是葉一年
它給我的錯誤:
字符串未被識別爲有效DateTime.Couldn't店< 29/12/1398>在VisitDate列。預期的類型是DateTime。
那麼如何以dd/MM/yyyy格式正確顯示我的日期而沒有任何可能的錯誤?
抱歉這個長期問題
我不t知道很多波斯日期系統,所以我不能完全回答你的問題,但我注意到你做了很多不必要的字符串轉換(例如,'PersianDate'返回一個字符串而不是某種日期數據類型)。 **不要爲日期**使用字符串,總是使用特定的類型(例如'DateTime'和任何用於存儲波斯日期的內容),所有問題都將立即消失。如果您想以某種格式顯示日期,請使用[您的UI控件的格式化選項](https://msdn.microsoft.com/zh-cn/library/f9x2790s(v = vs.110).aspx) 。 – Heinzi
@Heinzi坦克,我刪除了不必要的字符串轉換,並獲得日期格式的波斯日期,但仍然想在ddg/yyyy中顯示它們在dgv中,我不知道如何,(dgv是數據有界) – SaraniO
您可以格式化DGV列。 – jdweng