PDA

View Full Version : سوال: تبدیل تاریخ شمسی به میلادی



davidrobert
چهارشنبه 02 دی 1394, 19:22 عصر
سلام خسته نباشید میدانم این تاپیک تکراری هستش و میدونم این تاپیک تو انجمن Asp باید باشه ولی اونجا اصلا کسی نیست جواب بده.
من از این تاریخ در سی شارپ استفاده میکنم برای تبدیل تاریخ شمسی به میلادی
در سورس در کلاس هستش
public static string Miladi(string year, string month, string day)
{
//تبدیل تاریخ شمسی به میلادی
try
{
PersianCalendar pc = new PersianCalendar();
DateTime dt1 = pc.ToDateTime(int.Parse(year), int.Parse(month), int.Parse(day), 0, 0, 0, 0);
return dt1.Year + "/" + dt1.Month + "/" + dt1.Day;
}
catch
{ return ""; }
}
این سورس در فرم هستش
void changedate()
{
try
{
string shamsi = TxtShamsi.Text;
string year = shamsi.Substring(0, 4);
string manth = shamsi.Substring(shamsi.Length - 5, 2);
string day = shamsi.Substring(shamsi.Length - 2, 2);
TxtMiladi.Text = Class1.Miladi(year, manth, day);
}
catch
{
}
}
private void TxtShamsi_TextChanged(object sender, EventArgs e)
{
changedate();
}
این سورس برای تبدیل تاریخ شمسی به میلادی کار میکنه ولی تو َasp نوشتم جواب نمیدهد پیغام خطا نمیدهد ولی تاریخ شمسی من رو تبدیل نمیکنه در text change در رویداد click اصلاً تاریخ شمسی رو به میلادی تبدیل نمیکنه کلی روی سایت خارجی و فارسی گشتم چیزی پیدا نکردم مجبور شدم تاپیک ایجاد کنم.

fakhradin
پنج شنبه 03 دی 1394, 10:03 صبح
با سلام برای تبدیل تاریخ شمسی به میلادی و برعکس توی دات نت کلاس و توابع مستقیم وجود داره و نیاز به دوباره کدنویسی نیست کد زیر رو براتون می ذارم تا توی حل مشکل کمکتون کنه



using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Globalization;


namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
Tarikh_Shamsi shamsi = new Tarikh_Shamsi();
shamsi.ConvertToShamsi(DateTime.Now);
Console.WriteLine(shamsi);
DateTime dt = shamsi.ConvertToMiladi();
Console.WriteLine(dt.ToShortDateString());
Console.ReadLine();
}


class Tarikh_Shamsi
{
public int Year { get; set; }
public int Month { get; set; }
public int Day { get; set; }
private PersianCalendar pc = new PersianCalendar();


public void ConvertToShamsi(DateTime dt)
{
this.Year = pc.GetYear(DateTime.Now);
this.Month = pc.GetMonth(DateTime.Now);
this.Day = pc.GetDayOfMonth(DateTime.Now);
}


public DateTime ConvertToMiladi()
{
return pc.ToDateTime(this.Year, this.Month, this.Day, 0, 0, 0, 0);
}


public override string ToString()
{
return String.Format("{0}/{1}/{2}", this.Year, this.Month,this.Year);
}
}
}
}