PDA

View Full Version : سوال: شمارش تاريخ



malekabadi_a
سه شنبه 18 تیر 1392, 08:45 صبح
با عرض سلام و خسته نباشيد خدمت دوستان. مي خواستم بدونم كه چجوري ميشه به نرم افزار گفت كه فاصله بين يك تاريخ تا تاريخ ديگري رو محاسبه كنه. من براي تاريخ هايي كه داخل يك ماه هستن مشكلي ندارم. مي خواستم بدونم چجوري ميشه به نرم افزار گفت كه مثلا از تاريخ 3/22 تا تاريخ 4/13 ، محاسبه كنه كه چند روز بين اين تاريخ ها فاصله هست و عددش رو بده. دوستان شديداً نيازمند حل اين مشكل هستم. لطفا راهنمايي كنيد. با تشكر

M.YasPro
سه شنبه 18 تیر 1392, 09:03 صبح
اینو ببینید
DateTime dt1 = new DateTime(2013, 5, 1);
DateTime dt2 = new DateTime(2013, 6, 5);
TimeSpan t = new TimeSpan();
t = dt2 - dt1;
int days = t.Days;
this.Title = days.ToString();
موفق باشید

malekabadi_a
سه شنبه 18 تیر 1392, 12:31 عصر
اینو ببینید
DateTime dt1 = new DateTime(2013, 5, 1);
DateTime dt2 = new DateTime(2013, 6, 5);
TimeSpan t = new TimeSpan();
t = dt2 - dt1;
int days = t.Days;
this.Title = days.ToString();
موفق باشید
با عرض سلام و خسته نباشید خدمت شما دوست عزیز. واقعا ممنون از کمکتون. من نحوه ی این کار را یاد گرفتم. اما یه مشکل هست. الان که ما توی نیمه ی اول سال هستیم , باید روز های ماه رو 31 رو حساب کنه. اما 30 روز حساب می کنه. من خودم یه الگوریتم دارم که می تونه این مشکل رو برطرف کنه. اما می خواستم بدونم که آیا میشه با استفاده از کلاس های دات نت نیز این مشکل را حل کرد؟. با تشکر.

mohsen22
سه شنبه 18 تیر 1392, 12:55 عصر
چیزی که می خوایین رو من دارم البته به زبان وی بی- از کلاسهای خود دات نت هم استفاده می کنه
اگه تبدیلش کردیبن به سی شارپ به منم بدید لطفا!

Public Class Form1

Private Function ShamsiDateDiff(ByVal Date1 As String, ByVal Date2 As String, Optional ByVal InterVal As DateInterval = DateInterval.Day) As Integer

Dim MDate1, MDate2 As Date

Dim SDate1 = Split(Date1, "/")
Dim SDate2 = Split(Date2, "/")

Dim Pc As New Globalization.PersianCalendar

MDate1 = Pc.ToDateTime(SDate1(0), SDate1(1), SDate1(2), 0, 0, 0, 0)
MDate2 = Pc.ToDateTime(SDate2(0), SDate2(1), SDate2(2), 0, 0, 0, 0)

Return DateDiff(InterVal, MDate1, MDate2)

End Function

Private Sub btnRun_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRun.Click
MsgBox(ShamsiDateDiff(txtDate1.Text.Trim, txtDate2.Text.Trim, DateInterval.Day))
End Sub
End Class

ایمان مدائنی
سه شنبه 18 تیر 1392, 13:21 عصر
DateTime dt1 = new DateTime(1366, 9, 21);
DateTime dt2 = new DateTime(1392, 9, 21);
DateTime dt3 = new DateTime(dt2.Subtract(dt1).Ticks);
int years = dt3.Year;
int month = dt3.Month;
int day = dt3.Day;

M.YasPro
سه شنبه 18 تیر 1392, 13:53 عصر
احتمالا تاریخ شما شمسی هست
با این متد اول اونرو به میلادی تبدیل کنید

using System.Globalization;
public DateTime ConvertToMiladi(string date)
{
try
{
string[] d = new string[3];
d = date.Split('/');
PersianCalendar g = new PersianCalendar();
return g.ToDateTime(int.Parse(d[0]), int.Parse(d[1]), int.Parse(d[2]), 8, 0, 0, 0);//1388/09/10
}
catch { return new DateTime(2000, 1, 1); }
}