تقنية المعلومات
شركة تيم سيرف للخدمات وحلول الإنترنت المتكاملة

Buy and Sell text links


العودة   تقنية المعلومات > ::::: تقنية المعلومات التطويرية::::: > تطوير المواقع > تقنيات مبرمجى ASP.NET

تقنيات مبرمجى ASP.NET يناقش هذا المنتدى برمجة صفحات ويب لتعمل من جهة السيرفر باستخدام منصة الدوت نت باحدى لغاتها المختلفة VB.NET C# J# C++/CLI Delphi .NET ويناقش القسم أيضا كل مايتعلق ببرمجة ال XML Web Services وطرق تصميمها



إضافة رد
 
LinkBack LinkBack أدوات الموضوع انواع عرض الموضوع
  #1 (permalink)  
قديم 2008-11-08, 03:12 AM
:: إدارة تقنية المعلومات ::
 
تاريخ التسجيل: 01-11-2008
المشاركات: 141
افتراضي كيفية تحويل التاريخ من الميلادي إلى الهجري في ASP.net

كما نعرف أن قاعدة البيانات SQL server لا تقبل إدخال التاريخ بالهجري إذا كان الحقل
من نوع Datetime

فتحتاج في هذه الحالة إلى دالة للتحويل من التاريخ الهجري إلى الميلادي و العكس ..

الفئة Date.cs تحتوي على دوال عديدة لتحويل التاريخ من هجري إلى ميلادي و العكس بالإضافة إلى دوال مساعدة أخرى:

كود PHP:
using System;
using System.Web;
using System.Diagnostics;
using System.Globalization;
using System.Data;
using System.Collections;

namespace Bahsas
{
    
/// <summary>

    /// Summary description for Dates.

    /// </summary>

    
public class Dates
    
{
        private 
HttpContext cur;
        
        private const 
int startGreg=1900;
        private const 
int endGreg=2100;
        private 
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"};
        private 
CultureInfo arCul;
        private 
CultureInfo enCul;
        private 
HijriCalendar h;
        private 
GregorianCalendar g;
            
        public 
Dates()
        {
            
cur HttpContext.Current;

            
arCul=new CultureInfo("ar-SA");
            
enCul=new CultureInfo("en-US");

            
h=new  HijriCalendar();
            
g=new GregorianCalendar(GregorianCalendarTypes.USEnglish);

            
arCul.DateTimeFormat.Calendar=h;
            
        }
        
           
/// <summary>

        /// Check if string is hijri date and then return true 
        ///التحقق هل النص المدخل تاريخ هجري و إرجاع قيمة صحيحة 
        /// </summary>

        /// <PARAM name="hijri"></PARAM>

        /// <returns></returns>

        
public bool IsHijri(string hijri)
        {
            if (
hijri.Length<=0)
            {
                
                
cur.Trace.Warn("IsHijri Error: Date String is Empty");
                return 
false;
            }
            try
            {    
                
DateTime tempDate=DateTime.ParseExact(hijri,allFormats,
                     
arCul.DateTimeFormat,DateTimeStyles.AllowWhiteSpaces);
                if (
tempDate.Year>=startGreg && tempDate.Year<=endGreg)
                    return 
true;
                else
                    return 
false;
            }
            catch (
Exception ex)
            {
                
cur.Trace.Warn("IsHijri Error :"+hijri.ToString()+"\n"+
                                  
ex.Message);
                return 
false;
            }

        }
        
/// <summary>
        /// Check if string is Gregorian date and then return true 
        ///التحقق هل النص المدخل تاريخ ميلادي و إرجاع قيمة صحيحة 
        /// </summary>

        /// <PARAM name="greg"></PARAM>

        /// <returns></returns>

        
public bool IsGreg(string greg)
        {
            if (
greg.Length<=0)
            {
                
                
cur.Trace.Warn("IsGreg :Date String is Empty");
                return 
false;
            }
            try
            {    
                
DateTime tempDate=DateTime.ParseExact(greg,allFormats,
                    
enCul.DateTimeFormat,DateTimeStyles.AllowWhiteSpaces);

                if (
tempDate.Year>=startGreg && tempDate.Year<=endGreg)
                    return 
true;
                else
                    return 
false;
            }
            catch (
Exception ex)
            {
                
cur.Trace.Warn("IsGreg Error :"+greg.ToString()+"\n"+ex.Message);
                return 
false;
            }

        }

        
/// <summary>
        /// Return Today Gregorian date and return it in yyyy/MM/dd format
        /// yyyy/MM/dd إرجاع تاريخ اليوم بالميلادي بشكل  
        /// </summary>

        /// <returns></returns>

        
public string GDateNow()
        {
            try
            {
                return 
DateTime.Now.ToString("yyyy/MM/dd",enCul.DateTimeFormat);
            }
            catch (
Exception ex)
            {
                
cur.Trace.Warn("GDateNow :\n"+ex.Message);
                return 
"";
            }
        }
        
/// <summary>
        /// Return formatted today Gregorian date based on your format
        ///  ارجاع تاريخ اليوم بالميلادي بالِشكل الذي تحدده  
        /// </summary>

        /// <PARAM name="format"></PARAM>

        /// <returns></returns>

        
public string GDateNow(string format)
        {
            try
            {
                return 
DateTime.Now.ToString(format,enCul.DateTimeFormat);
            }
            catch (
Exception ex)
            {
                
cur.Trace.Warn("GDateNow :\n"+ex.Message);
                return 
"";
            }
        } 
        
        
/// <summary>
        /// Return Today Hijri date and return it in yyyy/MM/dd format
        /// yyyy/MM/dd إرجاع تاريخ اليوم  بالهجري  بشكل  
        /// </summary>
        /// <returns></returns>

        
public string HDateNow()
        {
            try
            {
                return 
DateTime.Now.ToString("yyyy/MM/dd",arCul.DateTimeFormat);
            }
            catch (
Exception ex)
            {
                
cur.Trace.Warn("HDateNow :\n"+ex.Message);
                return 
"";
            }
        }
        
/// <summary>
        /// Return formatted today hijri date based on your format
        /// إرجاع تاريخ اليوم بالهجري بالِشكل الذي تحدده  
        /// </summary>
        /// <PARAM name="format"></PARAM>
        /// <returns></returns>


        
public string HDateNow(string format)
        {
            try
            {
                return 
DateTime.Now.ToString(format,arCul.DateTimeFormat);
            }
            catch (
Exception ex)
            {
                
cur.Trace.Warn("HDateNow :\n"+ex.Message);
                return 
"";
            }
            
        }
        
        
/// <summary>
        /// Convert Hijri Date to it's equivalent Gregorian Date
        ///تحويل التاريخ الهجري إلى ما يكافئه بالتاريخ الميلادي
        /// </summary>
        /// <PARAM name="hijri"></PARAM>
        /// <returns></returns>

        
public string HijriToGreg(string hijri)
        {
            
            if (
hijri.Length<=0)
            {
                
                
cur.Trace.Warn("HijriToGreg :Date String is Empty");
                return 
"";
            }
            try
            {
                
DateTime tempDate=DateTime.ParseExact(hijri,allFormats,
                   
arCul.DateTimeFormat,DateTimeStyles.AllowWhiteSpaces);
                return 
tempDate.ToString("yyyy/MM/dd",enCul.DateTimeFormat);
            }
            catch (
Exception ex)
            {
                
cur.Trace.Warn("HijriToGreg :"+hijri.ToString()+"\n"+ex.Message);
                return 
"";
            }
        }
        
/// <summary>
        /// Convert Hijri Date to it's equivalent Gregorian Date
        /// and return it in specified format
        /// تحويل التاريخ الهجري إلى ما يكافئه بالتاريخ الميلادي
        ///و إعادته بشكل محدد
        /// </summary>
        /// <PARAM name="hijri"></PARAM>
        /// <PARAM name="format"></PARAM>
        /// <returns></returns>

        
public string HijriToGreg(string hijri,string format)
        {
            
            if (
hijri.Length<=0)
            {
                
                
cur.Trace.Warn("HijriToGreg :Date String is Empty");
                return 
"";
            }
            try
            {
                
DateTime tempDate=DateTime.ParseExact(hijri,
                   
allFormats,arCul.DateTimeFormat,DateTimeStyles.AllowWhiteSpaces);
                return 
tempDate.ToString(format,enCul.DateTimeFormat);
                
            }
            catch (
Exception ex)
            {
                
cur.Trace.Warn("HijriToGreg :"+hijri.ToString()+"\n"+ex.Message);
                return 
"";
            }
        }
        
/// <summary>
        /// Convert Gregoian Date to it's equivalent Hijir Date
        /// تحويل التاريخ الميلادي إلى ما يكافئه بالتاريخ الهجري 
        /// </summary>
        /// <PARAM name="greg"></PARAM>
        /// <returns></returns>

        
public string GregToHijri(string greg)
        {
            
            if (
greg.Length<=0)
            {
                
                
cur.Trace.Warn("GregToHijri :Date String is Empty");
                return 
"";
            }
            try
            {
                
DateTime tempDate=DateTime.ParseExact(greg,allFormats,
                    
enCul.DateTimeFormat,DateTimeStyles.AllowWhiteSpaces);
                return 
tempDate.ToString("yyyy/MM/dd",arCul.DateTimeFormat);
                
            }
            catch (
Exception ex)
            {
                
cur.Trace.Warn("GregToHijri :"+greg.ToString()+"\n"+ex.Message);
                return 
"";
            }
        }
        
/// <summary>
        /// Convert Hijri Date to it's equivalent Gregorian Date and
        /// return it in specified format
        /// تحويل التاريخ الهجري إلى ما يكافئه بالتاريخ الميلادي
        ///و اعادته بشكل محدد
        /// </summary>
        /// <PARAM name="greg"></PARAM>
        /// <PARAM name="format"></PARAM>

        /// <returns></returns>

        
public string GregToHijri(string greg,string format)
        {
            
            if (
greg.Length<=0)
            {
                
                
cur.Trace.Warn("GregToHijri :Date String is Empty");
                return 
"";
            }
            try
            {
                
                
DateTime tempDate=DateTime.ParseExact(greg,allFormats,
                    
enCul.DateTimeFormat,DateTimeStyles.AllowWhiteSpaces);
                return 
tempDate.ToString(format,arCul.DateTimeFormat);
                
            }
            catch (
Exception ex)
            {
                
cur.Trace.Warn("GregToHijri :"+greg.ToString()+"\n"+ex.Message);
                return 
"";
            }
        }
        
                
        
/// <summary>
        /// Compare two instaces of string date 
        /// and return indication of thier values 
        ///مقارنة بين تاريخين (سلسة حرفية)
        /// </summary>

      /// <PARAM name="d1"></PARAM>
      /// <PARAM name="d2"></PARAM>
      /// <returns>positive d1 is greater than d2,
      /// negative d1 is smaller than d2, 0 both are equal</returns>
      ///إرجاع قيمة موجبة إذا كانت القيمة الأولى أكبر من القيمة الثانية ، 
      /// إرجاع قيمة صفر إذا كانت القيمتان متكافئتان ، إرجاع قيمة سالبة إذا    
     /// كانت القيمة الأولى أصغر من القيمة الثانية 


            
public int Compare(string d1,string d2)
        {
            try
            {
                
DateTime date1=DateTime.ParseExact(d1,allFormats,
                    
arCul.DateTimeFormat,DateTimeStyles.AllowWhiteSpaces);
                
DateTime date2=DateTime.ParseExact(d2,allFormats,
                    
arCul.DateTimeFormat,DateTimeStyles.AllowWhiteSpaces);
                return 
DateTime.Compare(date1,date2);
            }
            catch (
Exception ex)
            {
                
cur.Trace.Warn("Compare :"+"\n"+ex.Message);
                return -
1;
            }

        }

        
    }

فقط كل ما تحتاجه هو استدعاء دوال التحويل السابقة كما يلي:

لنفرض أن لدينا قاعدة البيانات التالية (مثال)

تحتوي عل حقلين ID,date_



نقوم بإدراج الفئة Date في مجلد app_Code إذا لم يكن موجود قم بإدراجه من خلال الضغط بالزر الأيمن على الـ Solutionو قم باختيار

Add New Asp.Net Folder و اختار من القائمة app_code





نقوم بإضافة الفئة إلى المجلد بالضغط على الزر الأيمن و اختيار Add Existing item و نحتار الفئة Date.cs





الآن نقوم باستدعاء الدالة في صفحة التي نريد تحويل التاريخ فيها بطريقتين :

1- في الـ code- behind في صفحة الـ dafualt.aspx.cs هذه هي الطريقة السهلة و المعتادة في البرمجة في التعامل مع Object:

تقوم بتعريف متغير من النوع Date

كود PHP:
Dates mydate = new Dates(); 
بعد ذلك نقوم باستدعاء الدالة كما يلي:
lblDate.Text = mydate.GregToHijri(string.Format("{0:d}", date_ ));


lblDate.Text

يمثل حقل مربع نص موجود في صفحة الـ Asp و المراد اسناد قيمة التاريخ (بعد التحويل من الميلادي إلى الهجري)إليه


2- استدعاء الدالة من خلال صفحة الـ dafualt.aspx مباشرة ذلك عندما يتم اسناد القيم في صفحة الـ dafualt.aspx من خلال الـ

SQLdatesource أو الـ Objectdatesource و ذلك عندما يتم التعامل مع الـ GridView ,DetailsView...

يتم تعريف دالة باسم (GetHijriDate) تأخذ قيمة من نوع DateTime و في داخل هذه الدالة نقوم باستدعاء دالة من الفئة Date

كود
protected string GetHijriDate(DateTime hijriDate)
{
Dates a = new Dates();
return a.GregToHijri(string.Format("{0:d}", hijriDate));
}


بعد ذلك في صفحة الـ aspx الخاصة بك قم بكتابة التالي:

HTML كود
<asp:Literal runat="server" ID="lblAddedDate" Text='<%#GetHijriDate((DateTime)DataBinder.Eval(Co ntainer. DataItem,"date_")) %>' />


كما يمكن استخدام الدالة GregToHijriبالشكل التالي:

كود
a.GregToHijri(string.Format("{0:d}", hijriDate),"yyyy/MM/dd");


لتحديد شكل التاريخ المطلوب





نلاحظ الجملة التالية:

كود
string.Format("{0:d}", hijriDate)


ماذا يعني الرمز d :

String Format for DateTime

هناك عدة رموز لها دلالات معينة نوضحها كالتالي :

كود PHP:
t    ShortTimePattern     h:mm tt
d    ShortDatePattern     M
/d/yyyy
T    LongTimePattern     h
:mm:ss tt
D    LongDatePattern    dddd
MMMM ddyyyy
f    
(combination of D and t)    ddddMMMM ddyyyy h:mm tt
F    FullDateTimePattern    dddd
MMMM ddyyyy h:mm:ss tt
g    
(combination of d and t)    M/d/yyyy h:mm tt
G    
(combination of d and T)    M/d/yyyy h:mm:ss tt
m
M    MonthDayPattern    MMMM dd
y
Y    YearMonthPattern    MMMMyyyy
r
R    RFC1123Pattern    ddddd MMM yyyy HH':'mm':'ss 
s    SortableDateTi¬mePattern    yyyy
'-'MM'-'dd'T'HH':'mm':'ss
u    UniversalSorta¬bleDateTimePat¬tern    yyyy
'-'MM'-'dd HH':'mm':'ss'Z' 
الأمثلة التالية توضح كيفية استخدام الرموز السابقة:

لنفرض ان لدينا متغير من نوع datetime باسم dt
يحمل القيمة التالية ( 2008-03-09 16:05:07.123 )

DateTime dt = new DateTime(2008, 3, 9, 16, 5, 7, 123);

كود PHP:
[C#]
String.Format("{0:t}"dt);  // "4:05 PM"                         ShortTime
String.Format("{0:d}"dt);  // "3/9/2008"                        ShortDate
String.Format("{0:T}"dt);  // "4:05:07 PM"                      LongTime
String.Format("{0:D}"dt);  // "Sunday, March 09, 2008"          LongDate
String.Format("{0:f}"dt);  // "Sunday, March 09, 2008 4:05 PM"  LongDate+ShortTime
String.Format("{0:F}"dt);  // "Sunday, March 09, 2008 4:05:07 PM" FullDateTime
String.Format("{0:g}"dt);  // "3/9/2008 4:05 PM"                ShortDate+ShortTime
String.Format("{0:G}"dt);  // "3/9/2008 4:05:07 PM"             ShortDate+LongTime
String.Format("{0:m}"dt);  // "March 09"                        MonthDay
String.Format("{0:y}"dt);  // "March, 2008"                     YearMonth
String.Format("{0:r}"dt);  // "Sun, 09 Mar 2008 16:05:07 GMT"   RFC1123
String.Format("{0:s}"dt);  // "2008-03-09T16:05:07"             SortableDateTime
String.Format("{0:u}"dt);  // "2008-03-09 16:05:07Z"            UniversalSortableDateTime


وهناك أيضاً رموز أخرى تستخدم مع الـ String.Format :

كود
(year)   السنة 
(monthالشهر 
(dayاليوم 
(hour 12)  الساعة بنظام 12 ساعة 
(hour 24الساعة بنظام 24 ساعة 
(minuteالدقائق 
(secondالثواني 
(second fractionجزء من الثانية 
(P.or A.M)


الأمثلة التالية بسي # توضح كيفية استخدام الاختصارات السابقة

كود
[C#]

String.Format("{0:y yy yyy yyyy}"dt);  // "8 08 008 2008"   year
String.Format("{0:M MM MMM MMMM}"dt);  // "3 03 Mar March"  month
String.Format("{0:d dd ddd dddd}"dt);  // "9 09 Sun Sunday" day
String.Format("{0:h hh H HH}",     dt);  // "4 04 16 16"      hour 12/24
String.Format("{0:m mm}",          dt);  // "5 05"            minute
String.Format("{0:s ss}",          dt);  // "7 07"            second
String.Format("{0:f ff fff ffff}"dt);  // "1 12 123 1230"   sec.fraction
String.Format("{0:F FF FFF FFFF}"dt);  // "1 12 123 123"    without zeroes
String.Format("{0:t tt}",          dt);  // "P PM"            A.M. or P.M.
String.Format("{0:z zz zzz}",      dt);  // "-6 -06 -06:00"   time zone


يمكنك أيضا استخدام (/)في التاريخ ، و( : ) في الوقت كما في المثال التالي:
كود
[C#]
String.Format("{0:d/M/yyyy HH:mm:ss}"dt); // "9/3/2008 16:05:07" - english (en-US)


بعض الصيغ الخاصة:
كود
[C#]
// الشهر/اليوم بدون صفر أو بصفر 
String.Format("{0:M/d/yyyy}"dt);            // "3/9/2008"
String.Format("{0:MM/dd/yyyy}"dt);          // "03/09/2008"

// اسم الشهر و اليوم
String.Format("{0:ddd, MMM d, yyyy}"dt);    // "Sun, Mar 9, 2008"
String.Format("{0:dddd, MMMM d, yyyy}"dt);  // "Sunday, March 9, 2008"

// السنة أربع خانتين /اربع خانات
String.Format("{0:MM/dd/yy}"dt);            // "03/09/08"
String.Format("{0:MM/dd/yyyy}"dt);          // "03/09/2008" 
رد مع اقتباس
قديم 2008-11-09, 03:35 PM   المشاركة رقم: 2 (permalink)
الكاتب
:: Mohamed Oraby ::
:: إدارة تقنية المعلومات ::
 
الصورة الرمزية Mohamed Oraby
تاريخ التسجيل : 20-10-2008
رقم العضوية : 3
الإقامة : مصر
الهواية : الفوتوشوب
المواضيع : 85
الردود : 229
مجموع المشاركات : 314
مشاركتي في اليوم بمعدل: 0.26
العمر : 23
معدل التقييم : 10
معدل تقييم المستوى :
آخر تواجد : ()
الإتصال Mohamed Oraby غير متواجد حالياً


كاتب الموضوع : IM.com المنتدى : تقنيات مبرمجى ASP.NET
افتراضي

بالتوفيق ولك منى جزيل الشكر












التوقيع

  • إسم الشركة : تيم سيرف للخدمات وحلول الانترنت المتكاملة
  • صاحب الشركة : إسلام عطية السيد
  • مقر الشركة : الزقازيق - جمهورية مصر العربية
  • خدمات الشركة : استضافة - ريسلرات - سيرفرات - VPS - SMS - ADSL - برمجة - تصميم - ديجي شات - راديو
  • هاتف الشركة : 0020552311408/0020173392593
  • بريد الشركة : oraby_sales@teamserv.com
  • روابط الشركة : www.teamserv.com.eg
  • تذاكر الدعم الفني : www.support.teamserv.com
  • رقم السجل التجاري: شركة رسمية مسجلة برقم 118068
عرض البوم صور Mohamed Oraby   رد مع اقتباس
قديم 2008-11-10, 05:18 PM   المشاركة رقم: 3 (permalink)
الكاتب
:: عضو تقنية مجتهد ::
 
الصورة الرمزية S4TCc.CoM
تاريخ التسجيل : 28-10-2008
رقم العضوية : 16
الإقامة : EGYPT
الهواية : MoNTaDa!aT
المواضيع : 25
الردود : 88
مجموع المشاركات : 113
مشاركتي في اليوم بمعدل: 0.09
العمر : 23
معدل التقييم : 10
معدل تقييم المستوى :
آخر تواجد : ()
الإتصال S4TCc.CoM غير متواجد حالياً


كاتب الموضوع : IM.com المنتدى : تقنيات مبرمجى ASP.NET
افتراضي












التوقيع

للتواصل عبر البريد الإلكترونى

s4tcc@s4tcc.com
smart@s4tcc.com



عرض البوم صور S4TCc.CoM   رد مع اقتباس
إضافة رد

مواقع النشر (المفضلة)


الذين يشاهدون محتوى الموضوع الآن : 1 ( الأعضاء 0 والزوار 1)
 
أدوات الموضوع
انواع عرض الموضوع

تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة
Trackbacks are متاحة
Pingbacks are متاحة
Refbacks are متاحة
Trackbacks are متاحة
Pingbacks are متاحة
Refbacks are متاحة

الانتقال السريع



الساعة الآن 11:30 AM بتوقيت مسقط


Powered by vBulletin® Copyright ©2000 - 2012, Jelsoft Enterprises Ltd
جميع الحقوق محفوظة لـتقنية المعلومات العربية للمساعدة والتدريب 2010 ©