صفحه 1 از 2 12 آخرآخر
نمایش نتایج 1 تا 40 از 71

نام تاپیک: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview

  1. #1
    کاربر دائمی
    تاریخ عضویت
    مرداد 1391
    محل زندگی
    کرج
    پست
    310

    نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview

    سلام
    ممنون میشم راهنماییم کنید.


  2. #2

    نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview

    خب چرا شمسیش رو درج نمی کنی؟

  3. #3

    نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview

    من الگوريتمش رو توي سي شارپ مينويسم زحمت تبديل تابهش رو توي اس كيو ال خودت بكش:
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;

    namespace WindowsApplication2
    {
    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
    //********* Test ************
    MessageBox.Show(Shamsi(2005, 8, 14).ToShortDateString());
    MessageBox.Show(todayShamsi().ToShortDateString()) ;
    }

    private DateTime todayShamsi()
    {
    DateTime today;
    today = DateTime.Today;
    string year = today.Year.ToString();
    string month = today.Month.ToString();
    string day = today.Day.ToString();
    int Y = int.Parse(year);
    int M = int.Parse(month);
    int D = int.Parse(day);
    return Shamsi(Y, M, D);
    }
    private DateTime Shamsi(int Y, int M, int D)
    {
    if (Y == 0)
    Y = 2000;
    if (Y < 100)
    Y = Y + 1900;
    if (Y == 2000)
    {
    if (M > 2)
    {
    DateTime Temp = new DateTime(Y, M, D);
    Temp = Temp.AddDays(1);
    Y = int.Parse(Temp.Year.ToString());
    M = int.Parse(Temp.Month.ToString());
    D = int.Parse(Temp.Day.ToString());
    }
    }
    if (M < 3 || (M == 3 && D < 21))
    Y = Y - 622;
    else Y = Y - 621;
    switch (M)
    {
    case 1: if (D < 21)
    {
    M = 10;
    D = D + 10;
    }
    else
    {
    M = 11;
    D = D - 20;
    }
    break;

    case 2: if (D < 20)
    {
    M = 11;
    D = D + 11;
    }
    else
    {
    M = 12;
    D = D - 19;
    }
    break;

    case 3:
    if (D < 21)
    {
    M = 12;
    D = D + 9;
    }
    else
    {
    M = 1;
    D = D - 20;
    }
    break;

    case 4:
    if (D < 21)
    {
    M = 1;
    D = D + 11;
    }
    else
    {
    M = 2; D = D - 20;
    }
    break;

    case 5:
    if (D < 22)
    {
    M = M - 3;
    D = D + 10;
    }
    else
    {
    M = M - 2;
    D = D - 21;
    }
    break;

    case 6:
    if (D < 22)
    {
    M = M - 3;
    D = D + 10;
    }
    else
    {
    M = M - 2;
    D = D - 21;
    }
    break;

    case 7:
    if (D < 23)
    {
    M = M - 3;
    D = D + 9;
    }
    else
    {
    M = M - 2;
    D = D - 22;
    }
    break;

    case 8:
    if (D < 23)
    {
    M = M - 3;
    D = D + 9;
    }
    else
    {
    M = M - 2;
    D = D - 22;
    }
    break;

    case 9:
    if (D < 23)
    {
    M = M - 3;
    D = D + 9;
    }
    else
    {
    M = M - 2;
    D = D - 22;
    }
    break;

    case 10:
    if (D < 23)
    {
    M = 7;
    D = D + 8;
    }
    else
    {
    M = 8;
    D = D - 22;
    }
    break;

    case 11:
    if (D < 22)
    {
    M = M - 3;
    D = D + 9;
    }
    else
    {
    M = M - 2;
    D = D - 21;
    }
    break;

    case 12:
    if (D < 22)
    {
    M = M - 3;
    D = D + 9;
    }
    else
    {
    M = M - 2;
    D = D - 21;
    }
    break;
    }
    DateTime Temp1 = new DateTime(Y, M, D);
    return Temp1;
    }
    }
    }

  4. #4

    نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview

    اينم لينك دانلود تابع ميلادي به شمسي در SQL

  5. #5
    کاربر دائمی آواتار uniqueboy_ara
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    تهران
    پست
    420

    نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview

    ببخشیدااا، ولی مگه ما خود آزاری داریم که اینجوری بخوایم تبدیل کنیم؟؟؟
    خیلی راحت با توابع SQL CLR میشه از تو خود #C این تابع رو با استفاده از PersianDate ساخت و به SQL انتقال داد!!!
    آموزشش هم توی سایت هست!

  6. #6
    کاربر دائمی
    تاریخ عضویت
    مرداد 1391
    محل زندگی
    کرج
    پست
    310

    نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview

    فک کنم من سوالم و واضح مطرح نکردم.
    من با تبدبل تاربخ میلادی به شمسی مشکلی ندارم .... فقط چون تاریخ و به صورت میلادی تو فیلد dataetime ذخیره کردم تو datagridview به صورت میلادی نمایش داده میشه.... حالا میخوام بدونم تو رویداد CellFormaing دیتاگرید چی بنویسم که اون ستون تاریخشش به شمسی تبدیل شه...

  7. #7
    کاربر دائمی
    تاریخ عضویت
    مرداد 1391
    محل زندگی
    کرج
    پست
    310

    نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview

    نقل قول نوشته شده توسط ehsan7007 مشاهده تاپیک
    خب چرا شمسیش رو درج نمی کنی؟
    مرسی از پیشنهادت اما

    تاربخ شمسی و که نمیتونیم تو فیلد datatime ذخیره کنیم... . و اگه تاریخ و به صورت رشته ذخیره کنم تو query گرفتن دچار مشکل میشم

  8. #8

    نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview

    اینو میگی؟ :

    ضمیمه 91694

  9. #9
    کاربر دائمی
    تاریخ عضویت
    مرداد 1391
    محل زندگی
    کرج
    پست
    310

    نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview

    نقل قول نوشته شده توسط ehsan7007 مشاهده تاپیک
    اینو میگی؟ :

    ضمیمه 91694
    اگه این یه datagridview باشه و اینن تاریخ شمسی که نشون میده قبلا میلادی بوده باشه .. بله..

  10. #10

    نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview

    این datagridview هست و اونم تاریخ شمسیه ولی از اول شمسی ذخیره شده بوده ، بدون تبدیل!!

  11. #11
    کاربر دائمی
    تاریخ عضویت
    مرداد 1391
    محل زندگی
    کرج
    پست
    310

    نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview

    نقل قول نوشته شده توسط ehsan7007 مشاهده تاپیک
    این datagridview هست و اونم تاریخ شمسیه ولی از اول شمسی ذخیره شده بوده ، بدون تبدیل!!
    نه پس منظورم این نیست ...

  12. #12
    کاربر دائمی
    تاریخ عضویت
    مرداد 1391
    محل زندگی
    کرج
    پست
    310

    نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview

    کسی نیس که بتونه راهنماییم کنه؟؟؟

  13. #13

    نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview

    من هنوزم نفهمیدم چرا لقمت رو دور دهنت می چرخونی و مستقیم شمسی ذخیره نمی کنی و خودت رو این همه عذاب می ده؟؟؟!!!!!

  14. #14
    کاربر دائمی
    تاریخ عضویت
    مرداد 1391
    محل زندگی
    کرج
    پست
    310

    نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview

    نقل قول نوشته شده توسط ehsan7007 مشاهده تاپیک
    من هنوزم نفهمیدم چرا لقمت رو دور دهنت می چرخونی و مستقیم شمسی ذخیره نمی کنی و خودت رو این همه عذاب می ده؟؟؟!!!!!
    گفتم که!!!!!!!
    چون نمیشه تاریخ شمسی و تو datetime ذخیره کر د...

  15. #15
    کاربر دائمی
    تاریخ عضویت
    مرداد 1391
    محل زندگی
    کرج
    پست
    310

    نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview

    دوستان کسیییی هست که بدونه چه جوری میشه تاریخی که به صورت میلادی ذخیره شده رو به شمسی تو دیتاگریدویو نمایش داد؟؟؟ تابع تبدیل مییادی به شمسی و نمی خواما.... کدی که باید تو cellformating توشته شه رو میخوام...
    لطفا راهنمایی کنید

  16. #16

    نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview

    با سلام خدمت شما دوست عزیز

    خوب راحته که شما بیاین تو رویداد CellFormating توسط یه متغیر تاریخ اون سلول از سطرو بگیرید سپس تاریخ و ماه و روزشو جدا و به شمسی برگردونین بعد اینطوری به اون سلول اختصاص بدین


    dataGridView1.Rows[e.RowIndex].Cells[2].Value = string.Format("{0}/{1}/{2}", shyear, shmonth, shday);

    موفق باشین
    بایت بایت

  17. #17

    نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview

    متوجه نشدم که چرا اصرار دارید تاریخ رو به شکل میلادی در دیتابیس ذخیره کنید؟ نوع char(10) چه مشکلی برای تان ایجاد می کند؟ یا چه پردازشی می خواهید انجام دهید که با این نوع امکانش نیست؟

  18. #18

    نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview

    منم یه روزه دارم همینه بهشون میگم ، مگه بقیه چیکار می کنن؟!!

  19. #19

    نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview

    نحوه ی درج کردن اطلاعاتت رو بگو تا برات کد تاریخ شمسی رو بزارم.

  20. #20
    کاربر دائمی
    تاریخ عضویت
    مرداد 1391
    محل زندگی
    کرج
    پست
    310

    نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview

    راستش خیلی از دوستان برنامه نویس نظرشون اینه که بهتره تاریخ به صورت میلادی ذخیره شه... تو تاپیکای اینجام که سرچ کردم به این نتیجه رسیدم..
    و چون من اولین باره که برنامه نویسی میکنم ترجیح دادم از تجربه دیگران استفاده کنم...
    نطر شما چیه؟؟؟ یا ذخیره به صورت شمسی و تو فیلد char تو مقایسه ها برای گزارشش گیری دچار مشکل نمیشم؟؟??

  21. #21

    نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview

    نقل قول نوشته شده توسط nafisehk مشاهده تاپیک
    راستش خیلی از دوستان برنامه نویس نظرشون اینه که بهتره تاریخ به صورت میلادی ذخیره شه... تو تاپیکای اینجام که سرچ کردم به این نتیجه رسیدم..
    و چون من اولین باره که برنامه نویسی میکنم ترجیح دادم از تجربه دیگران استفاده کنم...
    نطر شما چیه؟؟؟ یا ذخیره به صورت شمسی و تو فیلد char تو مقایسه ها برای گزارشش گیری دچار مشکل نمیشم؟؟??
    از char(10) استفاده كنيد مشكلي پيش نمياد.

  22. #22

    نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview

    با سلام

    مشکل استفاده از DateTime در SQL این است که تاریخ های شمسی با 1300 شروع میشوند که در رنج و محدوده ی نوع متغیرهای DateTime نیست. و از سال 1700 شروع میشود .
    در نسخه ی 2008 شما با انتخاب نوع متغیر DateTime2 می توانید به راحتی تاریخ های شمسی رو هم درون دیتابیس ذخیره کنید و این خیلی بهتر از حالت Char است.

    محدوده ی Datetime2 :

    0001-01-01 through 9999-12-31
    January 1,1 AD through December 31, 9999 AD

    با این روش دیگه نیاز نیست تاریخ رکوردها رو به صورت میلادی درون دیتابیس ذخیره کنید و بعد هنگام نمایش اونها رو به شمسی تبدیل کنید.
    دلیل اینکه توصیه میشه از تاریخ های میلادی استفاده بشه کاملا سلیقه ایه. و بیشتر برمیگرده به اینکه خیلی از برنامه نویس ها ترجیه میدهند از نوع متغیر Datetime بجای Char استفاده کنند.

    با توجه به اینکه در دات نت تقویم فارسی هست ( حتی تقویم های چینی ، تایلندی و ... هم هست ) هیچ مشکلی در هیچ زمانی برای تبدیل تاریخ های میلادی به شمسی وجود نداره.
    از Globalization استفاده کنید و با PersianCalendar دی 2 خط کد تبدیل رو انجام بدید و میتوانید مطمئن باشید مایکروسافت کارشو درست انجام داده برای دیدن نمونه به اینجا سر بزنید :

    http://msdn.microsoft.com/en-us/libr...r.getyear.aspx

    پیشنهاد من اینه که شما تاریخ ها رو مستقیما به صورت شمسی به دیتابیس منتقل کنید و بیخیال تبدیل کردن بشید. چون هیچ نیازی برای اینکار وجود نداره و یک روش کاملا استاندارد برای اینکار وجود داره.

  23. #23
    کاربر دائمی
    تاریخ عضویت
    مرداد 1391
    محل زندگی
    کرج
    پست
    310

    نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview

    نقل قول نوشته شده توسط ali_habibi1384 مشاهده تاپیک
    از char(10) استفاده كنيد مشكلي پيش نمياد.

    یعنی سه راحتی متونم query بگیرم؟؟؟
    بین دو تا تاریخ؟
    تو 1 سال خاص؟مثلا نامه های ثبت شده تو سال 90؟

  24. #24
    کاربر دائمی
    تاریخ عضویت
    مرداد 1391
    محل زندگی
    کرج
    پست
    310

    نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview

    نقل قول نوشته شده توسط hakim22 مشاهده تاپیک
    با سلام

    مشکل استفاده از DateTime در SQL این است که تاریخ های شمسی با 1300 شروع میشوند که در رنج و محدوده ی نوع متغیرهای DateTime نیست. و از سال 1700 شروع میشود .
    در نسخه ی 2008 شما با انتخاب نوع متغیر DateTime2 می توانید به راحتی تاریخ های شمسی رو هم درون دیتابیس ذخیره کنید و این خیلی بهتر از حالت Char است.

    محدوده ی Datetime2 :

    0001-01-01 through 9999-12-31
    January 1,1 AD through December 31, 9999 AD

    با این روش دیگه نیاز نیست تاریخ رکوردها رو به صورت میلادی درون دیتابیس ذخیره کنید و بعد هنگام نمایش اونها رو به شمسی تبدیل کنید.
    دلیل اینکه توصیه میشه از تاریخ های میلادی استفاده بشه کاملا سلیقه ایه. و بیشتر برمیگرده به اینکه خیلی از برنامه نویس ها ترجیه میدهند از نوع متغیر Datetime بجای Char استفاده کنند.

    با توجه به اینکه در دات نت تقویم فارسی هست ( حتی تقویم های چینی ، تایلندی و ... هم هست ) هیچ مشکلی در هیچ زمانی برای تبدیل تاریخ های میلادی به شمسی وجود نداره.
    از Globalization استفاده کنید و با PersianCalendar دی 2 خط کد تبدیل رو انجام بدید و میتوانید مطمئن باشید مایکروسافت کارشو درست انجام داده برای دیدن نمونه به اینجا سر بزنید :

    http://msdn.microsoft.com/en-us/libr...r.getyear.aspx

    پیشنهاد من اینه که شما تاریخ ها رو مستقیما به صورت شمسی به دیتابیس منتقل کنید و بیخیال تبدیل کردن بشید. چون هیچ نیازی برای اینکار وجود نداره و یک روش کاملا استاندارد برای اینکار وجود داره.


    مرسی دوست خوبم

    اما من پروژم تو مراحل پایانیه و من با sql2005 کار کردم دیگه نمیتونم تغییرش بدم

  25. #25
    کاربر دائمی
    تاریخ عضویت
    مرداد 1391
    محل زندگی
    کرج
    پست
    310

    نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview

    نقل قول نوشته شده توسط ehsan7007 مشاهده تاپیک
    نحوه ی درج کردن اطلاعاتت رو بگو تا برات کد تاریخ شمسی رو بزارم.
    ممنونم اقای اجسان .گفتم من کد شمسی و دارم... فقط نمیدونم چه جوری 1 ستون و که میلادیه شمیسی کنم....مثل اینکه باید نوع داده رو به رشته تغییر بدم.............وای که چقد تلاش کردم و جقد کد نوشتم

  26. #26
    کاربر دائمی
    تاریخ عضویت
    مرداد 1391
    محل زندگی
    کرج
    پست
    310

    نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview

    دوستان لطفا بگید که اگه تاریخ و به صورت شمسی توchar(10) ذخیره کنم میتونم تو به بازه ی تاریخی یا از 1 ماه خاص یا سال خاص query بگیرم؟؟؟

  27. #27

    نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview

    با سلام خدمت شما

    آره میشه میتونی مثلا دستور selecto اینطوری بنویسی :

    برای یک ماه خاص :

    select * from kala where tsabt='1391/05/03'


    برای مابین چند ماه / روز :

    select * from kala where tsabt>='1391/01/05' and tsabt<='1391/05/03'


    از تکس باکس گرفتن:

    select * from kala where tsabt>='" + textBox1.text + "' and tsabt<='" + textBox2.text + "'"

    از between هم میتونی استفاده کنی.

    موفق باشی
    بایت بایت

  28. #28
    کاربر دائمی
    تاریخ عضویت
    مرداد 1391
    محل زندگی
    کرج
    پست
    310

    نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview

    نقل قول نوشته شده توسط Youuness مشاهده تاپیک
    با سلام خدمت شما

    آره میشه میتونی مثلا دستور selecto اینطوری بنویسی :

    برای یک ماه خاص :

    select * from kala where tsabt='1391/05/03'


    برای مابین چند ماه / روز :

    select * from kala where tsabt>='1391/01/05' and tsabt<='1391/05/03'


    از تکس باکس گرفتن:

    select * from kala where tsabt>='" + textBox1.text + "' and tsabt<='" + textBox2.text + "'"

    از between هم میتونی استفاده کنی.

    موفق باشی
    بایت بایت


    پس ذخیره تاریخ تو datetime به صورت میلادی مزیتش فقط اینه که برای ذخیره از نوع خودش استفاده میش؟؟؟ یعنی فقط تخصصی تره؟؟

  29. #29
    کاربر دائمی آواتار faravaghi
    تاریخ عضویت
    مهر 1388
    محل زندگی
    مشهد
    پست
    233

    نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview

    سلام،
    شما میتونید یه حلقه بزارین و در اون تمام فیلد های تاریخ رو به شمسی تبدیل کنید:


    using FarsiLibrary.Utils;
    using System.Globalization;
    if (Dgv.Rows.Count > 0)
    for (int i = 0; i < Dgv.Rows.Count; i++)
    {
    Dgv.Rows[i].Cells["farsiDate"].Value = ((PersianDate)Convert.ToDateTime(Dgv.Rows[i].Cells["GregorianDate"].Value)).ToString("g");
    }


    farsiDate : سلولیه که تاریخ شمسی توی اون نمایش داده میشه.
    GregorianDate : تاریخ میلادی که به صورت مخفی است.

  30. #30

    Smile نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview

    با سلام
    دوست من این کار بسیار ساده است
    شما باید یک تابع را در گرید فراخوانی کنی

    <asp:TemplateField HeaderText="تاریخ خبر" SortExpression="New_Date" Visible="False">
    <ItemTemplate>
    <div dir="ltr" align="right">
    <%# PersianDateTime(Eval("New_Date")) %>
    </div>
    </ItemTemplate>

    حالا این تابع را این طوری در بیهاند بنویس

    public static string PersianDateTime(object inputDate)
    {
    if (inputDate != null)
    {
    DateTime InputDate = Convert.ToDateTime(inputDate);

    return string.Format("{0}", Persia.Calendar.ConvertToPersian(InputDate).Weekda y, PersianTime(InputDate));


    }
    else
    {

    return "";
    }
    }

  31. #31

    نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview

    سلام دوست من . به نظرمن تاریخ را رشته ای تعریف نکن چون بعد به درد سر می افتی

  32. #32
    کاربر دائمی آواتار roolinjax
    تاریخ عضویت
    تیر 1390
    محل زندگی
    جایی که آرامش باشد.
    سن
    31
    پست
    312

    نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview

    سلام
    منم با نظر wgsfahime موافقم. چون خودم توی پروژه ای از نوع تاریخ زمان گذاشتم و وسط کار برای بعضی عملیات به این نتیجه رسیدم که اگر تاریخ و زمان نبود جواب نمیداد.
    در ضمن شما اگر بخوای از نوع char(10) بذاری کنترل صحت ورود داده به گردن شماست ، در حالی که توی نوع DateTime به سادگی می تونی با یه خط کد تابع IsDate رو هم پیاده کنی و از معتبر بودن تاریخ هم خیالت راحت بشه.
    دلیل دیگه استفاده از تاریخ میلادی برای پیدا کردن اختلاف بین دو تاریخه که در مورد شمسی اصلا جواب نمیده.
    چون به عنوان مثال سال میلادی در ماه دوم 28 روزه در حالی که شمسی 31 روزه است و در مورد اختلاف تاریخ به مشکل خواهید خورد.

    پس دوستان عزیز خشت اول را با تاریخ میلادی بگذارید تا بعدا به مشکل نخورید .
    تبدیلش به شمسی هم کاری نداره . چه توی برنامه ، چه کریستال ریپورت و چه هر جای دیگه از برنامه
    موفق باشید.

  33. #33

    Exclamation به نظر من این روش مناسب تره

    نقل قول نوشته شده توسط hakim22 مشاهده تاپیک
    با سلام

    مشکل استفاده از DateTime در SQL این است که تاریخ های شمسی با 1300 شروع میشوند که در رنج و محدوده ی نوع متغیرهای DateTime نیست. و از سال 1700 شروع میشود .
    در نسخه ی 2008 شما با انتخاب نوع متغیر DateTime2 می توانید به راحتی تاریخ های شمسی رو هم درون دیتابیس ذخیره کنید و این خیلی بهتر از حالت Char است.

    محدوده ی Datetime2 :

    0001-01-01 through 9999-12-31
    January 1,1 AD through December 31, 9999 AD

    با این روش دیگه نیاز نیست تاریخ رکوردها رو به صورت میلادی درون دیتابیس ذخیره کنید و بعد هنگام نمایش اونها رو به شمسی تبدیل کنید.
    دلیل اینکه توصیه میشه از تاریخ های میلادی استفاده بشه کاملا سلیقه ایه. و بیشتر برمیگرده به اینکه خیلی از برنامه نویس ها ترجیه میدهند از نوع متغیر Datetime بجای Char استفاده کنند.

    با توجه به اینکه در دات نت تقویم فارسی هست ( حتی تقویم های چینی ، تایلندی و ... هم هست ) هیچ مشکلی در هیچ زمانی برای تبدیل تاریخ های میلادی به شمسی وجود نداره.
    از Globalization استفاده کنید و با PersianCalendar دی 2 خط کد تبدیل رو انجام بدید و میتوانید مطمئن باشید مایکروسافت کارشو درست انجام داده برای دیدن نمونه به اینجا سر بزنید :

    http://msdn.microsoft.com/en-us/libr...r.getyear.aspx

    پیشنهاد من اینه که شما تاریخ ها رو مستقیما به صورت شمسی به دیتابیس منتقل کنید و بیخیال تبدیل کردن بشید. چون هیچ نیازی برای اینکار وجود نداره و یک روش کاملا استاندارد برای اینکار وجود داره.
    این روشی که دوست عزیزمون hakim22 فرمودند خیلی بهتر از روش های تغییر به میلادی و شمسی هستش و دردسر و سردرگمی کمتری داره.
    از امرو من دیگه از این نوع تاریخ استفاده میکنم.

  34. #34

    Question نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview

    ببخشید این روشی که دوستمون گفتن استفاده از datetime 2 روش بسیار خوبی است.
    طبق عکس زیر چطور میتونم وقتی روی دکمه کلیک شد دو تاریخ از هم کم شه اصلا فکر کنید این دو تاریخ توی یک دو تا textbox هست چجور باید از هم کم شن. اون کدهایی که آقای حبیبی توی صفحه اول قرار دادن خیلی مشکل بود ، یه روش میخوام مثل کد زیر.

            DateTime myDateTime = DateTime.Parse("01/11/1390 23:10:30");

    TimeSpan myTimeSpan = new TimeSpan(0, 1, 2, 4);

    DateTime myDateTime8 = myDateTime - myTimeSpan;

    Console.WriteLine("myDateTime - myTimeSpan = " + myDateTime8);

    Console.ReadKey();

    با تشکر

  35. #35
    کاربر دائمی آواتار roolinjax
    تاریخ عضویت
    تیر 1390
    محل زندگی
    جایی که آرامش باشد.
    سن
    31
    پست
    312

    نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview

    سلام
    آقای samadblaj میشه توی این روشی که شما استفاده می کنی مقدار تاریخ " 1391/02/31 " رو وارد کنید و ببینید که جواب میده یا نه ؟
    اگر مشکلی نداشت و از طرفی تونستید اختلاف بین دو تاریخ رو توی روش خودتون با یک خط کد بنویسید حتما به من هم بگید .
    گرچه جواب رو از همین الان میدونم که جواب چیه !!!
    اختلاف تاریخ که اصلا جواب درستی نخواهد داد .
    خودتون رو برای برخورد با مشکلات مختلف روشتون آماده کنید !!!!
    موفق باشید

  36. #36

    نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview

    سلام
    آقای samadblaj میشه توی این روشی که شما استفاده می کنی مقدار تاریخ " 1391/02/31 " رو وارد کنید و ببینید که جواب میده یا نه ؟
    اگر مشکلی نداشت و از طرفی تونستید اختلاف بین دو تاریخ رو توی روش خودتون با یک خط کد بنویسید حتما به من هم بگید .
    گرچه جواب رو از همین الان میدونم که جواب چیه !!!
    اختلاف تاریخ که اصلا جواب درستی نخواهد داد .
    خودتون رو برای برخورد با مشکلات مختلف روشتون آماده کنید !!!!
    موفق باشید
    سلام رولی جان این روشی که من استفاده کردم از datetime2 استفاده کردم که راحت جواب داد و فرمت رو پذیرفت عکسی رو که مشاهده میکنید هیچ converti نشده و توسط کاربر به صورت شمسی توی فیلد جدول ذخیره شد و به سادگی هم نمایش داد.

    DateTime myDateTime = DateTime.Parse("01/11/1390 23:10:30");

    TimeSpan myTimeSpan = new TimeSpan(0, 1, 2, 4);

    DateTime myDateTime8 = myDateTime - myTimeSpan;

    Console.WriteLine("myDateTime - myTimeSpan = " + myDateTime8);

    Console.ReadKey();


    این کد هم جواب میده روی فرمت یعنی اختلاف رو از این نوع فرمت بدست اورد.
    پس مشکلی با مقایسه ها نداره.

    فقط تنها مشکلی که دارم میخوام جای خط پایین یه تاریخ وارد کنم و بهم اختلاف رو نمایش بده ولی timespan اختلاف رو بر حسب ساعت نمایش میده (که دردسر داره یه روز رو تبدیل کنیم.)
        TimeSpan myTimeSpan = new TimeSpan(0, 1, 2, 4);


    این نوع تاریخ خیلی مناسب و کارامده . شما مشکلتون چیه وقتی راحت میشه ذخیره کرد راحت توسط TimeSpan اختلاف رو بدست آورد پس مشکل کجاست؟

  37. #37
    کاربر دائمی آواتار FastCode
    تاریخ عضویت
    تیر 1388
    محل زندگی
    /dev/null
    پست
    3,486

    نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview

    توابع تاریخ
    https://barnamenevis.org/showthread.p...=1#post1591589
    این متودها فقط با تاریخ شمسی کار میکنن و برای دیتابیس هایی هستن که تاریخ شمسی رو ذخیره میکنن.

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

    EDIT:
    روش سریعتر استفاده از یک smallint هست با دقت بالا و 127 سال اعتبار که فکر نکنم کسی اینجا بهش علاقه داشته باشه
    struct SmallDate {
    short Value;
    int GetDay() { return Value & 0x31; }
    int GetMonth() { return (Value >> 5) & 0x15; }
    int GetYear() { return Value >> 9; }
    }
    آخرین ویرایش به وسیله FastCode : سه شنبه 21 شهریور 1391 در 18:31 عصر

  38. #38
    کاربر دائمی آواتار roolinjax
    تاریخ عضویت
    تیر 1390
    محل زندگی
    جایی که آرامش باشد.
    سن
    31
    پست
    312

    نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview

    اولا من وب رو نگفتم ، چون اصلا زمینه ی کارم نیست و اطلاعاتی هم ندارم ازش
    دوما کجای این چیزی که نوشتی dateTime2 هستش ؟
    من که فرقی نمی بینم
    از طرفی چیزی که گفتم رو تست کردین ؟
    می دونم که اشتباهه
    چون تاریخ شمسی در کار نیست ، بلکه فقط سال میلادی رو عقب می کشه
    پس روز های ماه های میلادی و سال کبیسه بر حسب میلادی خواهد بود.
    تلاش نکن که محصول مایکروسافت رو ایرانی نشون بدی !!!!! بهش نمیاد!!!!!

  39. #39

    نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview

    اولا من وب رو نگفتم ، چون اصلا زمینه ی کارم نیست و اطلاعاتی هم ندارم ازش
    دوما کجای این چیزی که نوشتی dateTime2 هستش ؟
    من که فرقی نمی بینم
    از طرفی چیزی که گفتم رو تست کردین ؟
    می دونم که اشتباهه
    چون تاریخ شمسی در کار نیست ، بلکه فقط سال میلادی رو عقب می کشه
    پس روز های ماه های میلادی و سال کبیسه بر حسب میلادی خواهد بود.
    تلاش نکن که محصول مایکروسافت رو ایرانی نشون بدی !!!!! بهش نمیاد!!!!!
    دوست عزیز شما انگاری اطلاع ندارید.
    ببینید تاریخ datetime سری اول اگه اشتب نکنم از 1700 شروع میشد که ما نیاز به حدود 1200 داریم اگر ضرفیت datetime سری اول پایین بود همه ی ما ازش استفاده میکریم و نیازی نبود که از nvarchar و از این قبیل استفاده کنیم. و نکته دوم این تاریخ رو عقب نمیکشه !!! شما وقتی برای برنامه تون میزارید فاکتور سال 1390 رو میخوام این گزارش فقط فقط با تاریخ برنامه شما ست میشه نا با تاریخ سیستم.
    من از nvarchar استفاده کردم اما این نوع تاریخ عالیه. و در بدترین حالت هم هیچ مشکلی برای شما وجود نمیاد (مثل bigint نسبت به int).

    و نکته آخر مایکرو سافت و ایرانی ! نه عزیزم فقط زبان ما فارسی نیست این برای کشور های دیگه خاورمیانه از قبیل تاجیکستان ، افغانستان و فکر کنم پاکستان هم هست برای ایناست. و اگر نه اگه فقط زبان ما پارسی بود خبری هم از PersianCalender نبود.

    موفق باشید

  40. #40
    کاربر دائمی آواتار roolinjax
    تاریخ عضویت
    تیر 1390
    محل زندگی
    جایی که آرامش باشد.
    سن
    31
    پست
    312

    نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview

    خوب روش تعریف این متغیر چه شکلیه ؟
    و توی کدوم نسخه از ویژوال استودیو وجود داره ؟

صفحه 1 از 2 12 آخرآخر

تاپیک های مشابه

  1. نمایش آخرین رکورد ذخیره شده در دیتابیس
    نوشته شده توسط hadiM18 در بخش دسترسی به داده ها (ADO.Net و LINQ و ...)
    پاسخ: 11
    آخرین پست: چهارشنبه 09 مرداد 1398, 19:06 عصر
  2. نمایش تاریخ میلادی بصورت های مختلف
    نوشته شده توسط sheitoonbala در بخش ASP.NET Web Forms
    پاسخ: 1
    آخرین پست: یک شنبه 10 آذر 1387, 01:11 صبح
  3. سوال: کنترل مناسب برای نمایش صفحه هات ذخیره شده
    نوشته شده توسط rezaei manesh در بخش ASP.NET Web Forms
    پاسخ: 7
    آخرین پست: شنبه 29 تیر 1387, 18:20 عصر
  4. چگونگی نمایش فایل GIF ذخیره شده در پارادکس
    نوشته شده توسط siramin در بخش بانک های اطلاعاتی در Delphi
    پاسخ: 5
    آخرین پست: شنبه 24 شهریور 1386, 18:54 عصر
  5. نمایش فایلهای html ذخیره شده در بانک sql (فوری)
    نوشته شده توسط sh_m در بخش ASP.NET Web Forms
    پاسخ: 2
    آخرین پست: سه شنبه 03 آذر 1383, 09:08 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •