الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

التحويل من تاريخ أم القرى إلى تاريخ ميلادي

بدأه shramroasp في 9 أغسطس 2008 · 5 رد · 3,548 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم و رحمة الله وبركاته

ولله الحمد تمكنت من تحويل التاريخ الميلادي إلى تاريخ أم القرى عن طريق

public static string GetUmAlQura(string TheDate)
	{
		UmAlQuraCalendar cal = new UmAlQuraCalendar();
		int day = cal.GetDayOfMonth(DateTime.Parse(TheDate));
		int month = cal.GetMonth(DateTime.Now);
		int year = cal.GetYear(DateTime.Now);
		string Hij_Date = day.ToString() + "/" + month.ToString() + "/" + year.ToString();
		return Hij_Date;
	}

ولكن لم أتمكن من التحويل من تاريخ أم القرى إلى ميلادي فهل هناك من يعرف الطريقة وله جزيل الشكر

#3

أشكرك أخي systemdown على الرد

ولكن ما أقصده أنه للتحويل بالدالة todatetime من تقويم أم القرى لابد من وجود تاريخ بتقويم أم القرى أصلا ، ولكن هذا جزئية التحويل لتاريخ أم القرى تتطلب وجود تاريخ ميلادي من البدايدة .. عارف انا لخبطتك شوية .

يعي على سبيل المثال عندي textbox قام المدخل بإدخال التاريخ 09/08/1429 فما هي الطريقة المفترضة لتحويل هذا " النص " من نص كتابي لتقويم أم القرى ، ثم تحويله إلى تاريخ ميلادي بواسطة الدالة todatetime.

انا جهزت طريقة ليستقبل التاريخ الميلادي ليحوله إلى أم القرى

IFormatProvider culture = new CultureInfo("fr-Fr", true);
		DateTime gu = DateTime.Parse(GregorianDateString, culture);
		Thread.CurrentThread.CurrentCulture = new CultureInfo("ar-sa", false);
		Thread.CurrentThread.CurrentCulture.DateTimeFormat.Calendar = new UmAlQuraCalendar();
		//Thread.CurrentThread.CurrentCulture.DateTimeFormat.FullDateTimePattern = "dddd dd-MMMM-yyyy";
		Thread.CurrentThread.CurrentCulture.DateTimeFormat.FullDateTimePattern = "dd/MM/yyyy HH:mm tt";
		string ss = gu.ToString("F");
		return ss;

فأرجو المساعدة في التحويل من أم القرى إلى الميلادي لأه وكما ترى الطريقيتين تتطلب وجود تاريخ ميلادي تم إدخاله مسبقا ، فماذا لو أدخل التاريخ بصيغة أم القرى ليتم تحويله إلى ميلادي.

وشكرا

#4

عليك أن تقوم بتقسيم النص إلى يوم و شهر و تاريخ عن طريق الدالة split

string() dateString = textbox1.text.split("/")

dateString ستصبح مصفوفة فيها القيم الثلاث (يافتراض أن المستخدم أدخل التاريخ بشكل صحيح)

#5

لقد وجدت طريقة اعتقد انها سهلة نوعا ما

public static string UmAlQuratoGregorian(string UmAlQuraDateString)
	{


		string ss = "";

		string[] allFormats ={"yyyy/MM/dd","yyyy/M/d",
			"dd/MM/yyyy","d/M/yyyy",
			"dd/M/yyyy","d/MM/yyyy","yyyy-MM-dd",
			"yyyy-M-d","dd-MM-yyyy","d-M-yyyy",
			"dd-M-yyyy","d-MM-yyyy","yyyy MM dd",
			"yyyy M d","dd MM yyyy","d M yyyy",
			"dd M yyyy","d MM yyyy","dd/MM/yyyy HH:mm"};
		CultureInfo arCul = new CultureInfo("ar-SA");
		CultureInfo enCul = new CultureInfo("en-US");

		UmAlQuraCalendar h = new UmAlQuraCalendar();
		GregorianCalendar g = new GregorianCalendar(GregorianCalendarTypes.USEnglish);
		arCul.DateTimeFormat.Calendar = h;


		//------------ 
		if (UmAlQuraDateString.Length <= 0)
		{

			ss = "لا يوجد إدخال";

		}
		try
		{
			DateTime tempDate = DateTime.ParseExact(UmAlQuraDateString,
			   allFormats, arCul.DateTimeFormat, DateTimeStyles.AllowWhiteSpaces);
			ss = tempDate.ToString("dd/MM/yyyy HH:mm", enCul.DateTimeFormat);

		}
		catch (Exception ex)
		{
			ss = "التحويل :" + UmAlQuraDateString.ToString() + "\n" + ex.Message;

		}

		return ss;
	}

علما أنه يمكن التحكم في شكل التاريخ format باضافة براميتر للكلاس

#6

function UmAlQuraToGregorian(UmAlQuraDateString: string): string;

const

AllFormats: array[0..18] of string = ('yyyy/MM/dd', 'yyyy/M/d',

'dd/MM/yyyy', 'd/M/yyyy', 'dd/M/yyyy',

'd/MM/yyyy', 'yyyy-MM-dd', 'yyyy-M-d',

'dd-MM-yyyy', 'd-M-yyyy', 'dd-M-yyyy',

'd-MM-yyyy', 'yyyy MM dd', 'yyyy M d',

'dd MM yyyy', 'd M yyyy', 'dd M yyyy',

'd MM yyyy','dd/MM/yyyy HH:mm');

var

HijDate: UmAlQuraCalendar;

GrgDate: GregorianCalendar;

FrmGrgClndr: DateTime;

arCul, enCul: CultureInfo;

begin

arCul := CultureInfo.Create('ar-SA');

enCul := CultureInfo.Create('en-US');

HijDate := UmAlQuraCalendar.Create();

GrgDate := GregorianCalendar.Create(GregorianCalendarTypes.USEnglish);

arCul.DateTimeFormat.Calendar := HijDate;

enCul.DateTimeFormat.Calendar := GrgDate;

FrmGrgClndr := DateTime.ParseExact(UmAlQuraDateString, AllFormats, arCul.DateTimeFormat, DateTimeStyles.AllowWhiteSpaces);

Result := FrmGrgClndr.ToString('dd/MM/yyyy', enCul.DateTimeFormat);

arCul.Free;

enCul.Free;

HijDate.Free;

GrgDate.Free;

end;

بارك الله فيك ... انا الحقيقة استخدم CodeGear Delphi وما شاء الله عليك أعتبرت مشكلتي انحلت تماماً .. مشكور مرة أخرى.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…