نمایش نتایج 1 تا 12 از 12

نام تاپیک: تبدیل رشته تاریخ به نوع datetime

  1. #1

    Question تبدیل رشته تاریخ به نوع datetime

    سلام دوستان مهندس.
    من می خوام یک رشته تاریخ شمسی رو به نوع datetime تبدیل کنم . مثل کد زیر

    System.Globalization.CultureInfo pr = new System.Globalization.CultureInfo("fa-ir");
    DateTime dt = DateTime.ParseExact("1396/04/31", "yyyy/MM/dd", pr);
    ولی dt به جای اینکه 1396/04/31 باشه، تاریخ میلادی (2017/7/22) هست.
    به جای (CultureInfo("fa-ir از invariantCulture استفاده کردم ولی با تاریخ های 31 روزه شمسی مشکل داره و خطا میده
    چطور این مشکل رو برطرف کنم. یعنی یک رشته تاریخ شمسی رو به نوع datetime تبدیل کنم?



  2. #2

    نقل قول: تبدیل رشته تاریخ به نوع datetime

    سلام
    از PersianCalendar Class استفاده کن
    لینک

  3. #3

    نقل قول: تبدیل رشته تاریخ به نوع datetime

    نقل قول نوشته شده توسط Mag-Mag مشاهده تاپیک
    سلام
    از PersianCalendar Class استفاده کن
    لینک
    بازم نشد
    PersianCalendar persianDate = new PersianCalendar();
    DateTime st = persianDate.ToDateTime(1396, 04, 23, 0, 0, 0, 0);
    با کمال تعجب بازم به من تاریخ میلادی برمیگردونه!!!!!
    چراااااا؟؟؟

    اینکه window 10 دارم نمیتونه باعث این مشکل بشه؟ چ(ون یه جایی همچین چیزی خوندم)
    آخرین ویرایش به وسیله saeid6366 : یک شنبه 17 اردیبهشت 1396 در 17:06 عصر

  4. #4

    نقل قول: تبدیل رشته تاریخ به نوع datetime

    ببخشید من شاید متوجه منظورتون نشدم
    شما توی نوع datetime نمیتونی تاریخ فارسی ذخیره کنی

    البته منم فکر میکنم توی ویندوز 10 ، اگر فرمت ویندوز رو فارسی بزنی (توی تنظیمات Region) ، مشکل پیش میاد
    من خودم برای تبدیل تاریخ های فارسی به میلادی و برعکس از این کد استفاده می کنم


    System.Globalization.PersianCalendar persiandate = new System.Globalization.PersianCalendar();
    DateTime GregorianDate = new DateTime(DateTime.Now.Ticks);
    GregorianDate = persiandate.ToDateTime(1396, 2, 18, 0, 0, 0, 0);
    Response.Write(string.Format("Gregorian Calendar: {0}/{1}/{2} ", GregorianDate.Year, GregorianDate.Month.ToString("D2"), GregorianDate.Day.ToString("D2")));
    Response.Write(string.Format("<br/>Persian Calendar : {0}/{1}/{2}", persiandate.GetYear(GregorianDate), persiandate.GetMonth(GregorianDate).ToString("D2") ,persiandate.GetDayOfMonth(GregorianDate).ToString ("D2")));

  5. #5

    نقل قول: تبدیل رشته تاریخ به نوع datetime

    نقل قول نوشته شده توسط Mag-Mag مشاهده تاپیک
    ببخشید من شاید متوجه منظورتون نشدم
    شما توی نوع datetime نمیتونی تاریخ فارسی ذخیره کنی

    البته منم فکر میکنم توی ویندوز 10 ، اگر فرمت ویندوز رو فارسی بزنی (توی تنظیمات Region) ، مشکل پیش میاد
    من خودم برای تبدیل تاریخ های فارسی به میلادی و برعکس از این کد استفاده می کنم


    System.Globalization.PersianCalendar persiandate = new System.Globalization.PersianCalendar();
    DateTime GregorianDate = new DateTime(DateTime.Now.Ticks);
    GregorianDate = persiandate.ToDateTime(1396, 2, 18, 0, 0, 0, 0);
    Response.Write(string.Format("Gregorian Calendar: {0}/{1}/{2} ", GregorianDate.Year, GregorianDate.Month.ToString("D2"), GregorianDate.Day.ToString("D2")));
    Response.Write(string.Format("<br/>Persian Calendar : {0}/{1}/{2}", persiandate.GetYear(GregorianDate), persiandate.GetMonth(GregorianDate).ToString("D2") ,persiandate.GetDayOfMonth(GregorianDate).ToString ("D2")));
    خیلی ممنون از پاسخ گوییتون.
    فقط یه سوال: اگر ما تو نوع datetime نمیتونیم تاریخ فارسی ذخیره کنیم پس یک تاریخ فارسی رو چطور در پایگاه داده به صورت datetime2 ذخیره کنیم یعنی میشه پارامترمون رشته باشه و در پایگاه داده از نوع datetime2 ذخیره بشه؟

  6. #6

    نقل قول: تبدیل رشته تاریخ به نوع datetime

    فیلد تاریخ فارسی تو توی دیتا بیس از نوع char(10) بگیر
    فقط دقت کن که موقع ذخیره سازی ، حتما تاریخ هات 10 کاراکتر باشه
    مثلا بجای 1396/2/2 باید 1396/02/02 ذخیره کنی
    که بعدا برای سرچ و مرتب سازی مشکل نخوری

    یک راه دیگش اینه که فیلد تاریخت رو از نوع bigint بگیری و Datetime().Ticks رو توش ذخیره کنی
    و هر موقع خواستی با همین PersianCalendar تبدیل کنی و نمایش بدی یا موقع جستوجو اول تاریخت رو به Ticks تبدیل کنی و بعد پاس بدی به SQL

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

    من خودم برای جداولی که خیلی روی فیلد تاریخ سرچ ندارن و از راه اول استفاده میکنم

  7. #7

    نقل قول: تبدیل رشته تاریخ به نوع datetime

    نقل قول نوشته شده توسط saeid6366 مشاهده تاپیک
    سلام دوستان مهندس.
    من می خوام یک رشته تاریخ شمسی رو به نوع datetime تبدیل کنم . مثل کد زیر

    System.Globalization.CultureInfo pr = new System.Globalization.CultureInfo("fa-ir");
    DateTime dt = DateTime.ParseExact("1396/04/31", "yyyy/MM/dd", pr);
    ولی dt به جای اینکه 1396/04/31 باشه، تاریخ میلادی (2017/7/22) هست.
    به جای (CultureInfo("fa-ir از invariantCulture استفاده کردم ولی با تاریخ های 31 روزه شمسی مشکل داره و خطا میده
    چطور این مشکل رو برطرف کنم. یعنی یک رشته تاریخ شمسی رو به نوع datetime تبدیل کنم?
    کلا datetime ماهیت میلادی داره. پس با این کدی که نوشتید تبدیل شمسی به میلادی درست انجام میشه. اگر میخواهید نمایش بدید که نیاز به تبدیل نیست. اگر هم میخواهید ذخیره کنید باید همین dt را ذخیره کنید.
    اینکه در ویندوز10 تاریخ میلادی به صورت شمسی نمایش داده بشه مربوط به تنظیمات ویندوز هست که میتونید در موردش در اینترنت جستجو کنید ولی توصیه میکنم همه تبدیلات رو خودتون انجام بدید تا در ویندوزهای دیگر هم جواب بگیرید.

  8. #8

    نقل قول: تبدیل رشته تاریخ به نوع datetime

    سلام. من هم مشکلی تقریبا مشابه مشکل دوستمون دارم. من فیلدهای تاریخم رو nvarchar در نظر گرفتم و مقدار شمسی رو توشون ذخیره میکنم. حالا میخوام این دو تاریخ رو با هم مقایسه کنم باید اول تبدیل به تاریخ میلادی کنم اما تو تبدیل تاریخ ماه های 31 روزه به مشکل میخورم. میشه بگید چه طور میتونم تاریخ شمسی رو بدون مشکل به نوع datetime تبدیل کنم؟؟؟؟ و یا اینکه حداقل راهی برای مقایسه دو رشته باشه که توشون تاریخ ذخیره شده.ممنون

  9. #9
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1388
    محل زندگی
    تهران
    پست
    38

    نقل قول: تبدیل رشته تاریخ به نوع datetime

    دوستا سلام من تو كد زير با خطا مواجه ميشم :
    string temp = exampleInput3.Text;

    PersianDateTime persianDate = PersianDateTime.Parse("1396/03/02");
    DateTime miladiDate = persianDate.ToDateTime();

    RadScheduler1.SelectedDate = miladiDate;
    }



    البته در global.asax هم اين كد رو نوشتم:
    var persianCulture = new PersianCulture();

    persianCulture.DateTimeFormat.ShortDatePattern = "yyyy/MM/dd";
    persianCulture.DateTimeFormat.LongDatePattern = "dddd d MMMM yyyy";

    persianCulture.DateTimeFormat.AMDesignator = "صبح";
    persianCulture.DateTimeFormat.PMDesignator = "عصر";

    Thread.CurrentThread.CurrentCulture = persianCulture;
    Thread.CurrentThread.CurrentUICulture = persianCulture;

    وقتي تو اين خط PersianDateTime persianDate = PersianDateTime.Parse("1396/03/02"); بجاي مقدار رشته ثابت مقدار رو از يك تكست باكس ست ميكنم به فرمت رشته گير ميده و لي اگر رشته رو به صورت ثابت وارد كنم مشكلي نداره
    آخرین ویرایش به وسیله mostafapro : یک شنبه 31 اردیبهشت 1396 در 13:51 عصر

  10. #10

    نقل قول: تبدیل رشته تاریخ به نوع datetime

    سلام
    اگه با مقدار ثابت درسته و با مقدار textbox درست نیست
    خوب احتمالا فرمت رشته textbox به صورت تاریخ نیست
    یا مثلا موقع فراخوانی مقدارش خالی هست
    میتونید یک breakpoint بزارید
    و ببنید دقیقا مقدار textbox تون چی هست

    اگه نشد ، متن خطاتون رو قرار بدید

  11. #11
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1388
    محل زندگی
    تهران
    پست
    38

    نقل قول: تبدیل رشته تاریخ به نوع datetime

    والا هم مقدار ثابت هم مقداری که تو تکست باکس هست مشابه همه.photo_2017-05-21_12-00-47.jpgphoto_2017-05-21_12-01-12.jpg

  12. #12

    نقل قول: تبدیل رشته تاریخ به نوع datetime

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



    public static DateTime GetGregorianDateFromPersian(string pdate)
    {
    try
    {
    DateTime dt = new DateTime(int.Parse(pdate.Substring(0, 4)), int.Parse(pdate.Substring(5, 2)), int.Parse(pdate.Substring(8, 2)), new System.Globalization.PersianCalendar());
    return dt;
    }
    catch (Exception)
    {
    return DateTime.Now;
    }
    }

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

  1. پاسخ: 3
    آخرین پست: پنج شنبه 23 شهریور 1391, 22:45 عصر
  2. سوال: تبدیل رشته(عددی) به datetime در کریستال ریپورت
    نوشته شده توسط Hamid.Tabea در بخش گزارش سازی با Crystal Report
    پاسخ: 1
    آخرین پست: دوشنبه 02 مرداد 1391, 11:37 صبح
  3. آموزش: تابعی برای تبدیل رشته تاریخ شمسی به رشته تاریخ میلادی
    نوشته شده توسط Peyman.Gh در بخش ASP.NET Web Forms
    پاسخ: 3
    آخرین پست: سه شنبه 17 آبان 1390, 17:15 عصر
  4. مبتدی: تبدیل رشته به نوع DateTime
    نوشته شده توسط vbiman در بخش C#‎‎
    پاسخ: 1
    آخرین پست: جمعه 15 مهر 1390, 02:39 صبح
  5. تبدیل متغییر تاریخ به متغییر از نوع int
    نوشته شده توسط ramin149 در بخش ASP.NET Web Forms
    پاسخ: 1
    آخرین پست: شنبه 28 خرداد 1390, 22:44 عصر

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

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