مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

ofoghcomputer

عضویت از 1393/07/15

ذخیره تاریخ سیستم در فید از نوع date

  • چهارشنبه 29 دی 1395
  • 22:37
تشکر میکنم

با سلام.

وقتی رشته رو تبدیل به datetime می کنم ، ساعت هم توش هست.

می خوام ساعت نباشه و ذخیره یشه

لطفا راهنمایی نمایید

با تشکر

پاسخ های این پرسش

تعداد پاسخ ها : 4 پاسخ
کاربر سایت

kaveh.norozi

عضویت از 1394/11/30

  • پنجشنبه 30 دی 1395
  • 10:16

باسلام

فرمت بده بهش!!!

DateTime.Now.ToString("yyy/MM/dd");

این کد تاریخ میلادی سیستمو بصورت زیر نشون میده : 2016/12/10

اگه میخای تاریخ شمسی ذخیره کنی یه کلاس اضافه کن به پروژه و کد های زیرو بنویس داخلش:

اسم کلاسو PersianCulture.cs بذار:

using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Reflection;
using System.Web;

namespace GSD.Globalization
{

    public class PersianCulture : CultureInfo
    {
        private readonly Calendar cal;
        private readonly Calendar[] optionals;

        /// <summary>
        /// كد رو بخوان تا بفهمي
        /// </summary>
        /// <param name="cultureName">fa-IR</param>
        /// <param name="useUserOverride">true</param>
        /// <remarks>لطفا در هنگام استفاده به سايت سايان اشاره كنيد.</remarks>
        public PersianCulture()
            : this("fa-IR", true)
        {
        }

        public PersianCulture(string cultureName, bool useUserOverride)
            : base(cultureName, useUserOverride)
        {
            //Temporary Value for cal.
            cal = base.OptionalCalendars[0];

            //populating new list of optional calendars.
            var optionalCalendars = new List<Calendar>();
            optionalCalendars.AddRange(base.OptionalCalendars);
            optionalCalendars.Insert(0, new PersianCalendar());


            Type formatType = typeof(DateTimeFormatInfo);
            Type calendarType = typeof(Calendar);


            PropertyInfo idProperty = calendarType.GetProperty("ID", BindingFlags.Instance | BindingFlags.NonPublic);
            FieldInfo optionalCalendarfield = formatType.GetField("optionalCalendars",
                                                                  BindingFlags.Instance | BindingFlags.NonPublic);

            //populating new list of optional calendar ids
            var newOptionalCalendarIDs = new Int32[optionalCalendars.Count];
            for (int i = 0; i < newOptionalCalendarIDs.Length; i++)
                newOptionalCalendarIDs[i] = (Int32)idProperty.GetValue(optionalCalendars[i], null);

            optionalCalendarfield.SetValue(DateTimeFormat, newOptionalCalendarIDs);

            optionals = optionalCalendars.ToArray();
            cal = optionals[0];
            DateTimeFormat.Calendar = optionals[0];

            DateTimeFormat.MonthNames = new[] { "فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند", "" };
            DateTimeFormat.MonthGenitiveNames = new[] { "فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند", "" };
            DateTimeFormat.AbbreviatedMonthNames = new[] { "فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند", "" };
            DateTimeFormat.AbbreviatedMonthGenitiveNames = new[] { "فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند", "" };


            DateTimeFormat.AbbreviatedDayNames = new string[] { "ی", "د", "س", "چ", "پ", "ج", "ش" };
            DateTimeFormat.ShortestDayNames = new string[] { "ی", "د", "س", "چ", "پ", "ج", "ش" };
            DateTimeFormat.DayNames = new string[] { "یکشنبه", "دوشنبه", "ﺳﻪشنبه", "چهارشنبه", "پنجشنبه", "جمعه", "شنبه" };

            DateTimeFormat.AMDesignator = "ق.ظ";
            DateTimeFormat.PMDesignator = "ب.ظ";

            /*
            DateTimeFormat.ShortDatePattern = "yyyy/MM/dd";
            DateTimeFormat.LongDatePattern = "yyyy/MM/dd";
            
            DateTimeFormat.SetAllDateTimePatterns(new[] {"yyyy/MM/dd"}, 'd');
            DateTimeFormat.SetAllDateTimePatterns(new[] {"dddd, dd MMMM yyyy"}, 'D');
            DateTimeFormat.SetAllDateTimePatterns(new[] {"yyyy MMMM"}, 'y');
            DateTimeFormat.SetAllDateTimePatterns(new[] {"yyyy MMMM"}, 'Y');
             */

        }

        public override Calendar Calendar
        {
            get { return cal; }
        }

        public override Calendar[] OptionalCalendars
        {
            get { return optionals; }
        }

        internal static DateTime PersianToGregorianUS(DateTime date)
        {
            throw new NotImplementedException();
        }
    }
}

نیازی به تغییر دادن کد ها نیست یه بار Rebuild کنی تاریختم شمسی میشه

کاربر سایت

ofoghcomputer

عضویت از 1393/07/15

  • پنجشنبه 30 دی 1395
  • 11:24

با تشکر

اما خط زیر میاد تاریخ رو به رشته تبدیل می کنه که نمی شه تو فیلد از نوع date ذخیره کرد:

DateTime.Now.ToString("yyy/MM/dd");

کاربر سایت

kaveh.norozi

عضویت از 1394/11/30

  • پنجشنبه 30 دی 1395
  • 11:49

در کنترلر :

System.Web.HttpContext.Current.Session["DateVorod"] = DateTime.Now.ToString("yyy/MM/dd");

یک session به اسم DateVorod که تاریخ روز رو ارسال میکنه( میتونید بصورت viewbag هم اینکارو انجام بدین

بعد تو view بصورت زیر:

<script>
    //DateVorod اسم session
    $(document).ready(function () {
        
        var today = '@Session["DateVorod"]';
        $("#DateEnter").val(today);
 })
</script>

<td>@Html.EditorFor(model => model.DateEnter, new { htmlAttributes = new { @readonly = "readonly", @class = "form-control", id = "DateEnter" } })</td>

با این کار تاریخ شما که 1395/10/30 ارسال شده تو دیتا بیس معادل میلادی ذخیره میشه و میتونی کوئری هم بزنی!

کاربر سایت

kaveh.norozi

عضویت از 1394/11/30

  • پنجشنبه 30 دی 1395
  • 11:51

در ضمن  فرمت دهی برای Date اینجوری:

توجه کنید به این لینک

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)