امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
نمايش تاريخ بصورت شمسي
نویسنده پیام
iran58 آفلاین
كاربر دو ستاره
**

ارسال‌ها: 153
موضوع‌ها: 115
تاریخ عضویت: خرداد ۱۳۸۸

تشکرها : 25
( 14 تشکر در 9 ارسال )
ارسال: #1
نمايش تاريخ بصورت شمسي
سلام
تاريخ روزموردنظرم رادربانك اطلاعاتي بصورت Date Timeبه ميلادي ذخيره مي كنيم حال مي خواهم وقتي درفرم مربوطه اطلاعات رانمايش بدهم تاريخ بصورت شمسي باشد
مثلا تاريخ بصورت2010/05/07ذخيره شده است امادرفرم مي خواهم معادل همان روز89/02/17نمايش داده شود
۱۸-اردیبهشت-۱۳۸۹, ۱۰:۴۲:۳۴
ارسال‌ها
پاسخ
lord_viper غایب
مدیر کل انجمن
*****

ارسال‌ها: 3,949
موضوع‌ها: 352
تاریخ عضویت: بهمن ۱۳۸۴

تشکرها : 5193
( 9875 تشکر در 2650 ارسال )
ارسال: #2
RE: نمايش تاريخ بصورت شمسي
کد:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;

public class PersianDate
{
    System.Globalization.PersianCalendar _PDate;
    public DateTime enDate { set { SetDate(value); } }
    string year = "";
    string _NameOFMonth = "";
    string _Month = "";
    string month
    {
        get
        {
            return _Month;
        }
        set
        {
            //
            switch (value)
            {
                case "01":
                    {
                        _NameOFMonth = "فروردین";
                        break;
                    }
                case "02":
                    {
                        _NameOFMonth = "اردیبهشت";
                        break;
                    }
                case "03":
                    {
                        _NameOFMonth = "خرداد";
                        break;
                    }
                case "04":
                    {
                        _NameOFMonth = "تیر";
                        break;
                    }
                case "05":
                    {
                        _NameOFMonth = "مرداد";
                        break;
                    }
                case "06":
                    {
                        _NameOFMonth = "شهریور";
                        break;
                    }
                case "07":
                    {
                        _NameOFMonth = "مهر";
                        break;
                    }
                case "08":
                    {
                        _NameOFMonth = "آبان";
                        break;
                    }
                case "09":
                    {
                        _NameOFMonth = "آذر";
                        break;
                    }
                case "10":
                    {
                        _NameOFMonth = "دی";
                        break;
                    }
                case "11":
                    {
                        _NameOFMonth = "بهمن";
                        break;
                    }
                case "12":
                    {
                        _NameOFMonth = "اسفند";
                        break;
                    }
            }
            _Month = value;
        }
    }
    string _Day = "";
    string dayName = "";
    string day
    {
        get
        {
            return _Day;
        }
        set
        {
            _Day = value;
        }
    }
    string _DayOfWeek = "";
    string dayOfWeek
    {
        get
        {
            return _DayOfWeek;
        }
        set
        {
            switch (value)
            {
                case "Saturday":
                    {
                        _DayOfWeek = "شنبه";
                        break;
                    }
                case "Sunday":
                    {
                        _DayOfWeek = "یکشنبه";
                        break;
                    }
                case "Monday":
                    {
                        _DayOfWeek = "دوشنبه";
                        break;
                    }
                case "Tuesday":
                    {
                        _DayOfWeek = "سه شنبه";
                        break;
                    }
                case "Wednesday":
                    {
                        _DayOfWeek = "چهارشنبه";
                        break;
                    }
                case "Thursday":
                    {
                        _DayOfWeek = "پنجشنبه";
                        break;
                    }
                case "Friday":
                    {
                        _DayOfWeek = "جمعه";
                        break;
                    }
            }
        }
    }

    public PersianDate()
    {
        _PDate = new System.Globalization.PersianCalendar();
    }
    public PersianDate(DateTime enDate)
    {
        _PDate = new System.Globalization.PersianCalendar();
        SetDate(enDate);
    }
    private void SetDate(DateTime enDate)
    {
        year = _PDate.GetYear(enDate).ToString();
        month = _PDate.GetMonth(enDate).ToString();
        day = _PDate.GetDayOfMonth(enDate).ToString();
        dayOfWeek = _PDate.GetDayOfWeek(enDate).ToString();
        if (day.Length == 1)
            day = "0" + day;
        if (month.Length == 1)
            month = "0" + month;
    }
    public string ToShortDateString(DateTime enDate)
    {
        SetDate(enDate);
        return day + "/" + month + "/" + year;
    }
    public string ToShortDate_DayString(DateTime enDate)
    {
        SetDate(enDate);
        return dayOfWeek + " " + day + "/" + month + "/" + year;
    }
    public string ToLongDateString(DateTime enDate)
    {
        SetDate(enDate);
        return dayOfWeek + " " + " " + day + " " + _NameOFMonth + " " + year;
    }

    public string ToString(DateTime dateTime)
    {
        throw new NotImplementedException();
    }
}

[تصویر:  xshon.png]
از آن نماز که خود هیچ از آن نمی فهمی خدا چه فایده و بهره اکتساب کند
تفاخری نبود مر خدای عالم را که چون تو ابلهی او را خدا حساب کند
۱۸-اردیبهشت-۱۳۸۹, ۱۵:۰۸:۴۰
وب سایت ارسال‌ها
پاسخ
iran58 آفلاین
كاربر دو ستاره
**

ارسال‌ها: 153
موضوع‌ها: 115
تاریخ عضویت: خرداد ۱۳۸۸

تشکرها : 25
( 14 تشکر در 9 ارسال )
ارسال: #3
RE: نمايش تاريخ بصورت شمسي
سلام
ببخشيدمن منظورم راخوب نرساندم جواب خوبي هم نگرفتم
مشكل من اينجاست كه ازطريق كامپونت تاريخ راكاربربصورت شمسي انتخاب مي كنه امادربانك بصورت ميلادي ثبت مي كنه
حال مي خواهم درهنگام لودصفحه ونمايش داده ها تاريخ بصورت ميلادي نمايش داده مي شود كه من مي خواهم بصورت شمسي باشد
۱۹-اردیبهشت-۱۳۸۹, ۱۰:۱۲:۴۱
ارسال‌ها
پاسخ
lord_viper غایب
مدیر کل انجمن
*****

ارسال‌ها: 3,949
موضوع‌ها: 352
تاریخ عضویت: بهمن ۱۳۸۴

تشکرها : 5193
( 9875 تشکر در 2650 ارسال )
ارسال: #4
RE: نمايش تاريخ بصورت شمسي
خب مهندس کارت اشتباس
با این کار شما باید 2 تا فیلد داشته باشی اوای تاریخ میلادی و دومی تاریخ شمسی
موقع insert باید هم میلادی و هم شمسی وارد کنی تاریخها رو و موقع جستجو بر اساس میلادی جستجو کنی و شمسی رو نشون بدی

این کار یک روش پر دردسر و باعث افزونگی بانک هم میشه
شما میتونی یه کار راحتر بکین

شما تاریخ رو از کاربر شمسی بگیر موقع insert // ها رو بردار و تاریه رو به صورت یک مقدار عددی بریز تو بانک موقع نمایش یه تابع بنویس که // به تاریخ خروجی اضافه کنه


تو یک تاپیکی اینو توضیح داده بودم + تابع sqlش
(سرچش پای خودت)

[تصویر:  xshon.png]
از آن نماز که خود هیچ از آن نمی فهمی خدا چه فایده و بهره اکتساب کند
تفاخری نبود مر خدای عالم را که چون تو ابلهی او را خدا حساب کند
۱۹-اردیبهشت-۱۳۸۹, ۱۴:۲۶:۱۱
وب سایت ارسال‌ها
پاسخ
HoseinVig آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 1,165
موضوع‌ها: 97
تاریخ عضویت: مرداد ۱۳۸۵

تشکرها : 4768
( 2464 تشکر در 677 ارسال )
ارسال: #5
RE: نمايش تاريخ بصورت شمسي
سلام اینکه تاریخ رو میلادی ذخیره کنی و موقع نمایش تبدیل کنی .... ایرادش چیه؟

۱۹-اردیبهشت-۱۳۸۹, ۱۴:۴۸:۲۲
ارسال‌ها
پاسخ
تشکر شده توسط : kh0rshid_ir
lord_viper غایب
مدیر کل انجمن
*****

ارسال‌ها: 3,949
موضوع‌ها: 352
تاریخ عضویت: بهمن ۱۳۸۴

تشکرها : 5193
( 9875 تشکر در 2650 ارسال )
ارسال: #6
RE: نمايش تاريخ بصورت شمسي
حسین جان خودت حساب مدت زمان تبدیل تاریخ میلادی به شمسی رو تو یه query که خروجیش 1000 تا رکورد هست حساب کن+منابعی که به این علت بیهوده مصرف میشه
اگه شما این کارو رویه سرور شبکه انجام بدی که مثلا 5 تا یوزر بهش وصل بشن و واکشی بالا داشته باشن دیگه خودت حساب کن برادر
( :d میری sqlserver 2008 با پشتیبانی تاریخ فارسی نصب میکنی و دردسر نمیکشی :d )

[تصویر:  xshon.png]
از آن نماز که خود هیچ از آن نمی فهمی خدا چه فایده و بهره اکتساب کند
تفاخری نبود مر خدای عالم را که چون تو ابلهی او را خدا حساب کند
۱۹-اردیبهشت-۱۳۸۹, ۱۶:۳۴:۴۱
وب سایت ارسال‌ها
پاسخ
HoseinVig آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 1,165
موضوع‌ها: 97
تاریخ عضویت: مرداد ۱۳۸۵

تشکرها : 4768
( 2464 تشکر در 677 ارسال )
ارسال: #7
RE: نمايش تاريخ بصورت شمسي
سلام
آها از اون لحاظ بخای حساب کنی آره ، ولی اگه از LINQ to SQL استفاده بشه و بجای store procedure یا function اس کیو ال از توابع خود زبان application استفاده کنی(با وجود LINQ این امکان وجود داره) اونوقت پردازش تبدیل تاریخ میاد تحت کلاینت انجام میشه و دیگه اون مشکلی که شما گفتی نادیده گرفته میشه...
نقل قول: ( Biggrin میری sqlserver 2008 با پشتیبانی تاریخ فارسی نصب میکنی و دردسر نمیکشی Biggrin )
eee اس کیو ال از تاریخ فارسی هم پشتیبانی میکنه؟ نمیدونستم از چه نسخه ای به بعد؟

۱۹-اردیبهشت-۱۳۸۹, ۲۰:۲۰:۴۶
ارسال‌ها
پاسخ
تشکر شده توسط : kh0rshid_ir
esmaeily-hosein آفلاین
كاربر دو ستاره
**

ارسال‌ها: 232
موضوع‌ها: 12
تاریخ عضویت: دى ۱۳۸۴

تشکرها : 6
( 91 تشکر در 46 ارسال )
ارسال: #8
RE: نمايش تاريخ بصورت شمسي
نقل قول: حسین جان خودت حساب مدت زمان تبدیل تاریخ میلادی به شمسی رو تو یه query که خروجیش 1000 تا رکورد هست حساب کن+منابعی که به این علت بیهوده مصرف میشه
اگه شما این کارو رویه سرور شبکه انجام بدی که مثلا 5 تا یوزر بهش وصل بشن و واکشی بالا داشته باشن دیگه خودت حساب کن برادر
( میری sqlserver 2008 با پشتیبانی تاریخ فارسی نصب میکنی و دردسر نمیکشی )

میشه راجب تاریخ فارسی در SQl server 2008 یه کم توضیح بدی. من دیدم فقط Collation فارسی بهش اضافه شده بود.
بعد راجب Query گرفتن هم از این روشی که گفتین توضیح میدین.

میخوام بدونم تبدیل میلادی به شمسی به نظر شما فرایند سنگینیه آن هم در Client؟

هر چی روش خوبه توش خوب نیست!
(آخرین ویرایش در این ارسال: ۱۹-اردیبهشت-۱۳۸۹, ۲۱:۵۹:۰۸، توسط esmaeily-hosein.)
۱۹-اردیبهشت-۱۳۸۹, ۲۱:۵۴:۰۹
ارسال‌ها
پاسخ
lord_viper غایب
مدیر کل انجمن
*****

ارسال‌ها: 3,949
موضوع‌ها: 352
تاریخ عضویت: بهمن ۱۳۸۴

تشکرها : 5193
( 9875 تشکر در 2650 ارسال )
ارسال: #9
RE: نمايش تاريخ بصورت شمسي
فرایند رو تحت کلاینت بیاری فقط اون بار رو از رو سرور به کلاینتها منتقل میکنی
در کلاینتها با استفاده از application شما باید تو یه حلقه تمام رکوردها رو پیمایش و روال تغییر تاریخ و زمانبر بودن به قوت خودش باقیه

از sql2005 به بعد شما میتونین یک دیتا تایپ مجازی برای خودتون ایجاد کنید با استفاده از این قابلیت شما میتونین یک دیتاتایپ برای تاریخ شمسی به sql server اضافه کنین و ازش استفاده کنین
(منظورم این بود ، تو پست 6 فکر کنم منظورمو بد رسوندم)

من به شخصه از این روش استفاده میکنم

ابتدا ما فیلد تاریخ رو به صورت int در نظر بگیریم و موقع وارد کردن اطلاعات // های بین تاریخ رو برداریم یعنی 1388/01/07 رو به صورت 13880107 وارد میکنیم و با استفاده از یک تابع در سمت sql در هنگام نمایش خروجی // ها رو به خروجی اضافه می کنیم

کد:
CREATE FUNCTION separate_date(@intdate int)

RETURNS char(10)
AS
BEGIN
declare @sam char(8)
declare @dat char(10)
set @sam=convert(char(10),@intdate);
set @dat=substring(@sam,1,4)+'/'+substring(@sam,5,2)+'/'+substring(@sam,7,2)
return @dat
END
GO

چون پردازش روی فیلد عددی صورت میگیره پس طبعا سرعت بالاتری نسبت به روشهای دیگه خواهد داشت

برای استفاده از تابع فوق به صورت زیر عمل میکنیم

کد:
select dbo.separate_date(date) from tble

Date:نام فیلد تاریخ میباشد

table: نام جدول مورد نظر می باشد

توجه برای استفاده از توابعی به غیر از توابع اصلی sql قبل از استفاده باید dbo اعلان شود

[تصویر:  xshon.png]
از آن نماز که خود هیچ از آن نمی فهمی خدا چه فایده و بهره اکتساب کند
تفاخری نبود مر خدای عالم را که چون تو ابلهی او را خدا حساب کند
۱۹-اردیبهشت-۱۳۸۹, ۲۲:۴۵:۲۳
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : HoseinVig
HoseinVig آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 1,165
موضوع‌ها: 97
تاریخ عضویت: مرداد ۱۳۸۵

تشکرها : 4768
( 2464 تشکر در 677 ارسال )
ارسال: #10
RE: نمايش تاريخ بصورت شمسي
مبین جان تبدیل تاریخ حتی 1000 رکود کار سنگینی نیست چون فقط یک بار اجرا میشه (در کلاینت) اما اگه این کار رو توی سرور داشته باشیم آره میشه گفت کمی سنگین میشه (اونم در مواردی که تعداد کاربران سرور انگشت شمار نباشه) ، به نظر میاد اگه این زحمت تبدیل رو بدیم به کلاینت مشکلی نباشه.
در رابطه با روش شما هم الان حضور ذهن ندارم ولی قبلا یادم هست که چند تا نقص ازش پیدا کرده بودم...

نمونه کوئری که تبدیل بر دوش کلاینته (LINQ):
کد:
DataBaseDataContext db = new DataBaseDataContext();
datagrid1.datasource=from s in db.Table where s.date=DateTime.Now() select new {miladi2shamsi(s.date) };
فرض کردیم تابع miladi2shamsi رو قبلا توی سی شارپ تعریف کردیم
نام جدولمون table
و نام کلاس پایگاه دادمون DataBaseDataContext است

۱۹-اردیبهشت-۱۳۸۹, ۲۳:۵۶:۲۶
ارسال‌ها
پاسخ
moam آفلاین
كاربر دو ستاره
**

ارسال‌ها: 110
موضوع‌ها: 12
تاریخ عضویت: آذر ۱۳۸۸

تشکرها : 71
( 222 تشکر در 92 ارسال )
ارسال: #11
RE: نمايش تاريخ بصورت شمسي
اینجا کدش هست دیگه:
http://www.iranled.com/forum/showthread....115&page=2
۲۰-اردیبهشت-۱۳۸۹, ۰۰:۴۱:۵۳
ارسال‌ها
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  [سوال] ارسال پسورد بصورت كد شده iran58 1 2,524 ۱۹-آذر-۱۳۹۰, ۲۲:۱۶:۵۷
آخرین ارسال: Payman62
  تبديل تاريخ iran58 3 3,418 ۲۰-تير-۱۳۹۰, ۱۴:۴۲:۲۳
آخرین ارسال: Ghoghnus
  ارور در نمايش داده ها iran58 0 2,154 ۱۷-مهر-۱۳۸۹, ۰۹:۰۵:۱۳
آخرین ارسال: iran58
  نمايش اطلاعات درcombox iran58 1 3,628 ۲۴-شهریور-۱۳۸۹, ۱۶:۰۲:۰۹
آخرین ارسال: aydin_key
  عدم نمايش فرم iran58 0 2,166 ۰۸-شهریور-۱۳۸۹, ۱۱:۲۹:۳۹
آخرین ارسال: iran58
Question نمايش فرم در پنل iranazarakhsh 1 3,001 ۰۲-شهریور-۱۳۸۹, ۱۵:۲۱:۲۲
آخرین ارسال: dreamvbfox
  نمايش فرم در وسط صفحه iran58 1 5,707 ۲۰-مرداد-۱۳۸۹, ۱۳:۲۲:۴۵
آخرین ارسال: HoseinVig
  نمایش داده ها در یک سل بصورت ستاره iran58 0 2,272 ۲۰-مرداد-۱۳۸۹, ۰۸:۱۵:۱۸
آخرین ارسال: iran58
  نمايش داده ها در ديتاگريد iran58 1 3,030 ۱۲-مرداد-۱۳۸۹, ۱۲:۳۳:۵۹
آخرین ارسال: far_222000
  ثبت كلمه عبور بصورت هش شده در جدول iran58 3 3,934 ۲۸-تير-۱۳۸۹, ۱۳:۱۰:۳۱
آخرین ارسال: lord_viper

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS