PDA

View Full Version : باز هم تاریخ شمسی ؟!



_hosseini_
یک شنبه 02 خرداد 1389, 12:46 عصر
سلام
من حقیقتم جستجو کردم ولی موردی که خودم می خواستم در ارتباط با تاریخ شمسی پیدا نکردم .
من می خواهم تاریخی که کاربر در آن وارد می کند ، اولا شمسی باشد ، ثانیا قابلیت گزارش گیری با آن را داشته باشم . مثلا از تاریخ ....... تا تاریخ ........ به من در دیتا بیس بتوانم گزارش بگیرم .
ضمنا فیلد تاریخ را بخوام در دیتا بیس ذخیره کنم ، با توجه به اینکه این فیلد شمسی است ، باید Text گرفت یا date ?
چند تا dll شمسی پیدا کردم ، که یا بدرد بخور نبودند یا قابل افزودن به toolsbox نبودند .
ممنون از راهنمایی تان !

Pr0grammer
یک شنبه 02 خرداد 1389, 13:12 عصر
ضمنا فیلد تاریخ را بخوام در دیتابیس ذخیره کنم ، با توجه به اینکه این فیلد شمسی است ، باید Text گرفت یا date ?
Text!


من می خواهم تاریخی که کاربر در آن وارد می کند ، اولا شمسی باشد ، ثانیا قابلیت گزارش گیری با آن را داشته باشم . مثلا از تاریخ ....... تا تاریخ ........ به من در دیتا بیس بتوانم گزارش بگیرم .
برای اینکار یک راهش اینه که تاریخ رو در زمان نیاز به حالت های مختلف، تبدیل کنید...
مثلا :
* زمان ذخیره در بانک به میلادی تبدیل کنید (تا بتونید راحت تر فیلتر کنید) و زمان نمایش دوباره به شمسی تبدیل کنید.
یا
* تاریخ رو در بانک به صورت شمسی ذخیره و در زمان بررسی به میلادی تبدیل کنید...

Open-Source
یک شنبه 02 خرداد 1389, 13:47 عصر
سلام
من حقیقتم جستجو کردم ولی موردی که خودم می خواستم در ارتباط با تاریخ شمسی پیدا نکردم .
من می خواهم تاریخی که کاربر در آن وارد می کند ، اولا شمسی باشد ، ثانیا قابلیت گزارش گیری با آن را داشته باشم . مثلا از تاریخ ....... تا تاریخ ........ به من در دیتا بیس بتوانم گزارش بگیرم .
ضمنا فیلد تاریخ را بخوام در دیتا بیس ذخیره کنم ، با توجه به اینکه این فیلد شمسی است ، باید Text گرفت یا date ?
چند تا dll شمسی پیدا کردم ، که یا بدرد بخور نبودند یا قابل افزودن به toolsbox نبودند .
ممنون از راهنمایی تان !

تاریخ رو میتونی بصورت یک رشته 10 کاراکتری بصورت (yyyy/mm/dd) ذخیره کنی (بعدا راحت میتونی گزارش هم بگیری).

_hosseini_
سه شنبه 04 خرداد 1389, 12:43 عصر
سلام
میشه یه نمونه مثال بزنی . حقیقتا من از این تاریخ زیاد .... .
با تشکر !

Open-Source
سه شنبه 04 خرداد 1389, 13:48 عصر
SELECT
*
FROM
(SELECT * FROM table1 WHERE ToTarikh >= '1389/01/01') As tbl
WHERE
tbl.FromTarikh <= '1389/02/01'


اگه شما فیلد تاریخ رو یه رشته 10 کاراکتری فرض کنی.
توی این مثال شما میتونی از تاریخ فلان (فیلد ToTarikh) تا تاریخ فلان (فیلد FromTarikh) رو انتخاب کنی.

odiseh
سه شنبه 04 خرداد 1389, 13:54 عصر
سلام

معتبر بودن تاريخ شمسي رو موقع دريافت ازكاربر چطوري بايد كنترل كنيم؟

Open-Source
سه شنبه 04 خرداد 1389, 14:06 عصر
من از این تابع استفاده میکنم(سال کبیسه رو هم چک میکنه):

public bool CheckDate(string s)
{
bool blok = true;

if (s.Length > 10) blok = false;
if (s.Length < 10) blok = false;

// yyyy/mm/dd
if (s.Length == 10)
{
if (s.Substring(4, 1) == "/" && s.Substring(7, 1) == "/")
{
string y = s.Substring(0, 4);
string m = s.Substring(5, 2);
string d = s.Substring(8, 2);

int iy;
int im;
int id;

if (int.TryParse(y, out iy) == false) blok = false;
if (int.TryParse(m, out im) == false) blok = false;
if (int.TryParse(d, out id) == false) blok = false;

if (blok == true)
{
//-----Kabise
int t = 0;
bool boolKabise = false;

if (iy <= 1387) t = 1387 - iy;
else t = iy - 1387;

if ((t % 4) == 0) boolKabise = true;
else boolKabise = false;
//---------

if (im < 1 || im > 12)
blok = false;
if (im >= 1 && im <= 6)
if (id < 1 || id > 31) blok = false;
if (im >= 7 && im <= 11)
if (id < 1 || id > 30) blok = false;
if (im == 12)
{
if (boolKabise == true)
if (id < 1 || id > 30) blok = false;
if (boolKabise == false)
if (id < 1 || id > 29) blok = false;
}
}
}
else
{
blok = false;
}
}
/////////////

return (blok);
}