ورود

View Full Version : روش صحیح ثبت تاریخ در بانک اطلاعاتی



iman_ad
یک شنبه 03 مهر 1390, 00:36 صبح
سالم دوستان روش صحیح ثبت datetime در بانک اطلاعاتی چیه به utc ثبت کنیم و وقتی میخونیم به local تبدیل کنیم؟
کسی یک نمونه کد می گذاره.

iman_ad
یک شنبه 03 مهر 1390, 21:12 عصر
جالب حتی یک پاسخ!!

egoldashraf
یک شنبه 03 مهر 1390, 22:15 عصر
بله. مخصوصا وقتی از سرور های اشتراکی خارجی استفاده کنی و تاریخ ها رو کنترل نکرده باشی به مشکل میخوری. ولی اگه نرم افزار رو برای اینترانت مینویسی و یا کنترل سرور دست خودته زیاد ضروری نیست.

sanay_esh
یک شنبه 03 مهر 1390, 22:37 عصر
سلام
یه جستجو بکنی در سایت برنامه نویس مطالب خیلی مفید و جالبی پیدا میکنی !!!

headfon
یک شنبه 03 مهر 1390, 22:50 عصر
سالم دوستان روش صحیح ثبت datetime در بانک اطلاعاتی چیه به utc ثبت کنیم و وقتی میخونیم به local تبدیل کنیم؟
کسی یک نمونه کد می گذاره.

تاریخ را به صورت میلادی ذخیره کن و برای نمایش تبدیل به شمسی کن

تبدیل میلادی به شمسی
public static string PersianDate(string ChristianDate, bool showClock, bool rightToLeft)
{
DateTime dateTime = DateTime.Parse(ChristianDate);
System.Globalization.PersianCalendar persianCalendar = new System.Globalization.PersianCalendar();
string str = "";
if (rightToLeft)
{
str = persianCalendar.GetYear(dateTime).ToString("0000") + "/" +
persianCalendar.GetMonth(dateTime).ToString("00") + "/" +
persianCalendar.GetDayOfMonth(dateTime).ToString("00");
if (showClock)
{
str += " " +
persianCalendar.GetHour(dateTime).ToString("00") + ":" +
persianCalendar.GetMinute(dateTime).ToString("00") + ":" +
persianCalendar.GetSecond(dateTime).ToString("00");
}
}
else
{
if (showClock)
{
str = persianCalendar.GetHour(dateTime).ToString("00") +
":" + persianCalendar.GetMinute(dateTime).ToString("00") +
":" + persianCalendar.GetSecond(dateTime).ToString("00");
}
str += " " + persianCalendar.GetDayOfMonth(dateTime).ToString("00") +
"/" + persianCalendar.GetMonth(dateTime).ToString("00") +
"/" + persianCalendar.GetYear(dateTime).ToString("0000");
}
return str;
}


تبدیل شمسی به میلادی
public static DateTime ChristianDate(string PersianDate)
{
PersianDate = PersianDate.Replace(" ", "");

int year = int.Parse(PersianDate.Substring(0, PersianDate.IndexOf('/')));
int month = int.Parse(PersianDate.Substring(PersianDate.IndexO f('/') + 1, 2));
int day = int.Parse(PersianDate.Substring(PersianDate.LastIn dexOf('/') + 1, 2));

int hour = 0;
int minute = 0;
int second = 0;

try
{
hour = int.Parse(PersianDate.Substring(10, 2));
minute = int.Parse(PersianDate.Substring(13, 2));
second = int.Parse(PersianDate.Substring(16, 2));
}
catch { }

if (month > 12 || month < 01 || day > 31 || day < 01 || hour > 24 || hour < 00 || minute > 60 || minute < 00 || second > 60 || second < 00)
throw new Exception("فرمت تاریخ اشتباه است");

System.Globalization.PersianCalendar PCalendar = new System.Globalization.PersianCalendar();
return PCalendar.ToDateTime(year, month, day, hour, minute, second, 0);
}