دنبال یه روش کامل و تست شد برای کار با تاریخ و ساعت شمسی هستم
در حال حاضر نوع فیلد های تاریخ رو به صورت nvarchar(20) توو sql ذخیره میکنم
الان میخوام بدونم اگه بخوام روی فیلد های تاریخ محاسبات انجام بدم چیکار کنم
قبلا یه جدول ایجاد کرده بودم وتارخ های شمسی و میلادی ذخیره کرده بودم و باهاشون کار میکردم
یه زمانی هم از نوع داده datetime2(7) استفاده کردم که خطا زیاد داشت و بیخیالش شدم
روشی که شما استفاده کردید هم روش بدی نیست. ولی مشکلی که داره این هست که بسیاری از امکانات DateTime مثل توابع DateTime.Add یا DateTime.Diff رو نداره.
میتونید یک ستون دیگه هم از نوع datetime اضافه کنید و برای نمایش تاریخ از ستون string استفاده کنید و اگر احیانا در قسمتی از پروژه نیاز داشتید که دو تابع رو مقایسه کنید از فیلد datetime استفاده کنید.
البته میتونید کلا از نوع datetime استفاده کنید ولی در این صورت برای نمایش تاریخ شمسی باید از توابع تبدیل تاریخ شمسی به میلادی و برعکس استفاده کنید.
تابع تبدیل تاریخ میلادی به شمسی
public static string DateShamsi()
{
var currentDate = DateTime.Now;
PersianCalendar pcCalender = new PersianCalendar();
int year = pcCalender.GetYear(currentDate);
int month = pcCalender.GetMonth(currentDate);
int day = pcCalender.GetDayOfMonth(currentDate);
string shamsiDate = string.Format("{0:yyyy/MM/dd}", Convert.ToDateTime(year + "/" + month + "/" + day));
return shamsiDate;
}
بهترین روش ذخیره همون DateTime2 هست که مقایسه رو به شدت آسون میکنه و کار باهاش خیلی راحت میشه
فقط توجه کن موقع ذخیره باید میلادی ذخیره بشه و موقع دریافت هم باید با توابع به شمسی تبدیلش کنی .
و توجه کن که تاریخ سیستم هم باید میلادی باشه.
من خودم قبلا از string استفاده میکردم و اصلا خوب نبود ولی با این روش کلی کارم راحت تر شده
فقط اگه خواستی بصورت کد فرست دیتابیس رو درست کنی باید فیلد های تاریخ رو به صورت زیر تعریف کنی:
[Column(TypeName = "datetime2")]
public Nullable<DateTime> dateTime { get; set; }
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1033
- پاسخ :
1
|
تاریخ :
1402/09/08
- ساعت :
07:34:00 PM
- بازدید :
1160
- پاسخ :
1
|
تاریخ :
1402/09/21
- ساعت :
11:10:00 PM
- بازدید :
597
- پاسخ :
1
|
تاریخ :
1403/07/13
- ساعت :
12:06:00 PM
- بازدید :
349
- پاسخ :
1
|
تاریخ :
1403/06/24
- ساعت :
08:52:00 PM
- بازدید :
318
- پاسخ :
1
|
تاریخ :
1398/09/14
- ساعت :
01:58:00 PM
- بازدید :
4268
- پاسخ :
1
|
تاریخ :
1398/09/16
- ساعت :
11:41:00 AM
- بازدید :
4282
- پاسخ :
1
|
تاریخ :
1398/09/07
- ساعت :
02:15:00 PM
- بازدید :
3875
- پاسخ :
5
|
تاریخ :
1403/05/16
- ساعت :
05:43:00 AM
- بازدید :
660
- پاسخ :
0
|
تاریخ :
1398/09/05
- ساعت :
06:04:00 PM
- بازدید :
3172
- پاسخ :
2
|
تاریخ :
1401/02/24
- ساعت :
02:17:00 PM
- بازدید :
2006
- پاسخ :
1
|
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
74
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
108
- پاسخ :
0
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1033
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
428
- پاسخ :
1
|
تاریخ :
1402/08/01
- ساعت :
06:25:00 PM
- بازدید :
930
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1356
- پاسخ :
1
|
تاریخ :
1398/08/17
- ساعت :
01:27:00 AM
- بازدید :
4797
- پاسخ :
1
|
تاریخ :
1402/09/08
- ساعت :
07:34:00 PM
- بازدید :
1160
- پاسخ :
1
|
تاریخ :
1402/09/21
- ساعت :
11:10:00 PM
- بازدید :
597
- پاسخ :
1
|