PDA

View Full Version : سوال: چطور اول و آخر تاریخ ماه جاری سیستم رو بدست بیارم ؟



ghasem110deh
پنج شنبه 21 اسفند 1393, 22:06 عصر
سلام به همه ...
از این کد استفاده کردم واسه بدست آوردن روز اول و آخر ماه جاری سیستم :


DateTime date1, date2;
date1 = Convert.ToDateTime(DateTime.Now.Month + "/1/" + DateTime.Now.Year);
date2 = Convert.ToDateTime(DateTime.Now.Month + "/" + DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month) + "/" + DateTime.Now.Year);
SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=AnbarDB;Integrated Security=True");
SqlCommand com = new SqlCommand();
SqlDataReader oldr;
DataTable Table = new DataTable();
con.Open();
com.Connection = con;
com.CommandText = "SELECT Nfact, Kala, Price, Andaze, Kol, Mande, Dat FROM TBuy WHERE Dat Between @d AND @d2";
com.Parameters.AddWithValue("@d", date1);
com.Parameters.AddWithValue("@d2", date2);
oldr = com.ExecuteReader();
Table.Load(oldr);

الان از دهم به بعد نشون میده !

plus
جمعه 22 اسفند 1393, 09:25 صبح
اول که اصلا لزومی نداره شما از رشته استفاده کنی و بعد با متد Convert اون رو تبدیل کنی. دوما رشته ای که مشخصا کردی ممکنه بر اساس Culture جاری سیستم تعابیر مختلفی ازش بشه مثلا اون 1 ممکنه روز حساب بشه یا ماه!
اگه روز اول میلادی رو بخوای:

DateTime today = DateTime.Now;
DateTime firstDayOfMonth = new DateTime(today.Year, today.Month, 1);

اگه روز اول ماه شمسی جاری رو به میلادی (برای ذخیره در دیتابیس) بخوای

DateTime today = DateTime.Now;
PersianCalendar persianCalendar = new PersianCalendar();
int yearPersian = persianCalendar.GetYear(today);
int monthPersian = persianCalendar.GetMonth(today);
DateTime firstDayOfMonth = persianCalendar.ToDateTime(yearPersian, monthPersian, 1, 0, 0, 0, 0);

ghasem110deh
جمعه 22 اسفند 1393, 09:59 صبح
ممنون
تاریخ رو که با کامژوننت خودتون تو بانک ذخیره می کنم ! و بعد هم با متدی که دادین تو گرید ویو شمسی میکنم
حالا میخوام گزارش ماهانه رو بدست بیارم (ماه جاری - بدون اینکه کاربر ورودی بده)
.
.
.
فکر کنم اولی کارم رو را بندازه ... تست میکنم ببینم چی میشه

ghasem110deh
شنبه 23 اسفند 1393, 09:46 صبح
نشد حاجی ...
فقط از 20 به بعد رو نشون میده ! (با اولی)

plus
شنبه 23 اسفند 1393, 15:13 عصر
شما داری روز اول ماه میلادی رو بدست میاری و مقایسه میکنی. باید با دومی درست بشه. من دو تا جواب دادم که جفتش رو امتحان کنی.

partovinia
شنبه 23 اسفند 1393, 16:35 عصر
سلام .
ببخشید میشه بیشتر راجع به کدی که روز رو براساس شمسی بدست میاره توضیح بدین ؟اون 4 تا 0 برای چین؟ و اگر بخوام همه روزهای ماه رو به بانک بریزم باید چی کار کنم ؟
ممنون میشم اگر راهنماییم بفرمایید دوستان گرامی...

ghasem110deh
شنبه 23 اسفند 1393, 17:45 عصر
همیشه یه جای کار ما باس بلنگه :(
------
الان با این از اول ماه تا اخر ماه رو نشون میده ... ولی ماه بعد رو هم نشون میده !؟

DateTime today = DateTime.Now; DateTime date2;
date2 = Convert.ToDateTime(DateTime.Now.Month + "/" + DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month) + "/" + DateTime.Now.Year);
PersianCalendar persianCalendar = new PersianCalendar();
int yearPersian = persianCalendar.GetYear(today);
int monthPersian = persianCalendar.GetMonth(today);
DateTime firstDayOfMonth = persianCalendar.ToDateTime(yearPersian, monthPersian, 1, 0, 0, 0, 0);
SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=AnbarDB;Integrated Security=True");
SqlCommand com = new SqlCommand();
SqlDataReader oldr;
DataTable Table = new DataTable();
con.Open();
com.Connection = con;
com.CommandText = "SELECT Nfact, Kala, Price, Andaze, Kol, Mande, Dat FROM TBuy WHERE Dat between @d AND @d2 order by Dat";
com.Parameters.AddWithValue("@d", firstDayOfMonth);
com.Parameters.AddWithValue("@d2", date2);
oldr = com.ExecuteReader();

hamid_hr
شنبه 23 اسفند 1393, 18:02 عصر
میشه یک break point تو خط آخر بزاری و مقدار Date2, firstDayOfMonth رو بگی چی هست؟

plus
شنبه 23 اسفند 1393, 18:43 عصر
سلام .
ببخشید میشه بیشتر راجع به کدی که روز رو براساس شمسی بدست میاره توضیح بدین ؟اون 4 تا 0 برای چین؟ و اگر بخوام همه روزهای ماه رو به بانک بریزم باید چی کار کنم ؟
ممنون میشم اگر راهنماییم بفرمایید دوستان گرامی...
متد ToDateTime کلاس PersianCalendar یک تاریخ شمسی رو یک شی DateTime تبدیل میکنه. پارامترها به ترتیب سال، ماه، روز و ... هستن. چهار صفر آخر هم مربوط به ساعت، دقیقه و... هست.

همیشه یه جای کار ما باس بلنگه :(

شما که باز ورداشتی از ToDateTime استفاده کردی. این روش غلط هست. روز اول ماه بعدی رو هم باید با همون روش که روز اول ماه جاری بدست اومده بدست بیاری. برای مثال میشه firstDayOfMonth رو AddDays کرد.
در ادامه کد قبلی...

int daysInMonth = persianCalendar.GetDaysInMonth(yearPersian, monthPersian);
DateTime lastDayOfMonth = firstDayOfMonth.AddDays(daysInMonth - 1);