PDA

View Full Version : فهمیدن تاریخ دیروز به صورت کامل!



R_Rajaee_Rad
پنج شنبه 12 خرداد 1390, 19:48 عصر
سلام
با استفاده از تقویم شمسی موجود در خود دات نت میتونم تاریخ روز گذشته رو بدست بیارم اما این تاریخ مثلا اینجوریه
1389/3/11

که باید اینجوری در بیاد
1389/03/11

چه طوری باید به عدد های تک رقمی یه صفر اضافه کنم که بتونم به درستی یه بازه تاریخی رو چک کنم؟

PetekDincos
پنج شنبه 12 خرداد 1390, 20:10 عصر
با سلام

string[] StrSplit = "1389/3/11".Split('/');
int i = 0;
string NewStr=string.Empty;
foreach (string Str in StrSplit)
{
if (i == 0)
NewStr = String.Format("{0:0000}", int.Parse(Str));
else
NewStr += "/" + String.Format("{0:00}", int.Parse(Str));
i++;
}
MessageBox.Show(NewStr);

شاید راه ساده تری هم داشته باشه با تشکر

R_Rajaee_Rad
پنج شنبه 12 خرداد 1390, 22:07 عصر
با تشکر....
اگر ماه هم تک رقمی بود اونوقت بازم این برنامه شما اون رو دو رقمی میکنه؟
==============================================
یه سوال دیگه هم دارم:
من تاریخ رو به صورت شمسی از کاربر دریافت و به همون صورت برای کاربر نمایش و همون جوری هم ذخیره میکنم.کلا شمسی هست و در بانک SQL به صورت NCHAR-10 ذخیره مکینم
مشکلی پیش نمیاد؟؟

nader.golab
پنج شنبه 12 خرداد 1390, 22:51 عصر
با سلام


Dim A() As String = "1390/3/11".Split("/")
Dim StrDate, Mu, Da As String
If A(1).Length <> 2 Then Da = "0" + A(1)
If A(2).Length <> 2 Then Mu = "0" + A(1)
StrDate = A(0).ToString + "/" + A(1).ToString + "/" + A(2).ToString

PetekDincos
جمعه 13 خرداد 1390, 08:55 صبح
با تشکر....
اگر ماه هم تک رقمی بود اونوقت بازم این برنامه شما اون رو دو رقمی میکنه؟
==============================================
یه سوال دیگه هم دارم:
من تاریخ رو به صورت شمسی از کاربر دریافت و به همون صورت برای کاربر نمایش و همون جوری هم ذخیره میکنم.کلا شمسی هست و در بانک SQL به صورت NCHAR-10 ذخیره مکینم
مشکلی پیش نمیاد؟؟
با سلام
نه مشکلی پیش نمی یاد فقط یه مشکلی که تو آینده با اون برخورد کنی اینکه بخوایی تاریخ هات رو با هم مقایسه کنی که برای این کار هم از CompareTo() بایستی استفاده کنی مثلا بخواهی بین دو تاریخ دریافتی از کاریر یک کوئری از جدولت بگیری که برای این کار از دستور زیر استفاده کن



var query = db_Context.Table1(n => n.Date.CompateTo("1390/01/20") > -1 && n.Date.CompareTo("1390/02/20") < 1);



که بین دو تاریخ بالا کوئری از جدول Table1 برگشت داده می شود با تشکر

R_Rajaee_Rad
جمعه 13 خرداد 1390, 09:56 صبح
من کد شما رو به vb تبدیل کردم شد این


Dim query = db.reg_SendServices(Function(n) n.[date_raft].CompateTo(FarsiDate1.ThisText) > -1 AndAlso n.[date_end].CompareTo(FarsiDate1.ThisText) < 1)

اما این خطا رو میده


Error 1 Lambda expression cannot be converted to 'Integer' because 'Integer' is not a delegate type

PetekDincos
جمعه 13 خرداد 1390, 10:57 صبح
با سلام
تو دستور بالایی که نوشتید در اول به جای CompareTo از CompateTo استفاده کردی و من رو سیستمم VB نیست و ببین این متد CompareTo تو VB نوع برگشتیش چیه int یا چیز دیگه ایه با تشکر

R_Rajaee_Rad
جمعه 13 خرداد 1390, 11:50 صبح
اصلا مشکل CompateTo نیست چون بعد از نوشتن این دستورات خطا میگیره

Function(P) P.[date_raft]
در صورتی که خود شما هم اول CompateTo استفاده کرده

PetekDincos
جمعه 13 خرداد 1390, 12:17 عصر
دستور CompareTo() دو تا رشته رو با هم مقایسه می کنه و در مقایسه بین دو تاریخ در هر دو از این متد بایستی استفاده کنی و شاید این دستور در VB فرق کنه

R_Rajaee_Rad
جمعه 13 خرداد 1390, 17:35 عصر
جفت مقایسه ها رو با CompareTo() رفتم-دوباره کد شما رو با یه سایت دیگه تبدیل کردم
اما همون خطا رو داشت !!!
باید چکار کنم؟؟؟

PetekDincos
جمعه 13 خرداد 1390, 23:58 عصر
با سلام
یه مثال درست کردم که از متد CompareTo() استفاده کردم و خیلی راحت هم جواب داد فقط نمی دونم کجای این مشکل داشتی فقط باعث شدی که VB رو سیستمم نصب کنم با تشکر

مرتضی تقدمی
دوشنبه 16 خرداد 1390, 15:13 عصر
سلام
تو این تاپیک یک DLL از alimanam ارائه شده, ببین کار شما رو راه میندازه.
http://barnamenevis.org/showthread.php?251677-%DA%86%D9%86%D8%AF-%D9%85%D8%A7%D9%87-%D9%88-%DA%86%D9%86%D8%AF-%D8%B1%D9%88%D8%B2-%D8%8C-%D9%85%D8%A7%D9%87-%D8%AC%D8%A7%D8%B1%D9%8A-%D8%8C-%D8%B3%D9%87-%D9%85%D8%A7%D9%87%D9%87-%D8%A7%D8%AE%D9%8A%D8%B1-%D8%8C-%D8%B3%D8%A7%D9%84-%D8%AC%D8%A7%D8%B1%D9%8A
موفق باشید