ورود

View Full Version : سوال در مورد تبدیل تاریخ



phpphp7
سه شنبه 15 دی 1394, 21:58 عصر
سلام دوستان

من PersianDatePicker رو در پروژه ام استفاده کردم جهت انتخاب تاریخ به صورت فارسی

در رویداد کلیک text ، کد زیر هست :



onclick="PersianDatePicker.Show(this,'@today');


حالا میخواهم وقتی که به دیتابیس ارسال میشه ، تبدیل به تاریخ میلادی بشه . چون تو دیتابیس ، تاریخ من به صورت میلادی هستش

یک روش پیدا کردم اما خیلی سخت بود

http://up.vbiran.ir/uploads/12135145202139814596_sads.png

باتشکر

sh_esharif
سه شنبه 15 دی 1394, 22:06 عصر
سلام
در دیتابیس یه function بنویسید که موقع ثبت تاریخ در db ازش استفاده و به میلادی تبدیل کنه.
اگه بگردید کدشو پیدا میکنید. توی همین سایت هم قبلا پاسخ داده شده.
موفق باشید

salar IT man
سه شنبه 15 دی 1394, 22:14 عصر
سلام دوستان

من PersianDatePicker رو در پروژه ام استفاده کردم جهت انتخاب تاریخ به صورت فارسی

در رویداد کلیک text ، کد زیر هست :



onclick="PersianDatePicker.Show(this,'@today');


حالا میخواهم وقتی که به دیتابیس ارسال میشه ، تبدیل به تاریخ میلادی بشه . چون تو دیتابیس ، تاریخ من به صورت میلادی هستش

یک روش پیدا کردم اما خیلی سخت بود

http://up.vbiran.ir/uploads/12135145202139814596_sads.png

باتشکر

بهترین کار پیاده سازی ModelBinder شخصی برای نوع داده DateTime هستش. (http://www.dotnettips.info/post/1382/persiandatepicker-%DB%8C%DA%A9-datepicker-%D8%B4%D9%85%D8%B3%DB%8C-%D8%A8%D9%87-%D8%B2%D8%A8%D8%A7%D9%86-javascript-%DA%A9%D9%87-%D8%A7%D8%B2-%D8%AA%D8%A7%D8%B1%DB%8C%D8%AE-%D8%B3%D8%B1%D9%88%D8%B1-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D9%85%DB%8C%E2%80%8C%DA%A9%D9%86%D8%AF#‎‎comm ent-11960)

GILAS_MVC
سه شنبه 15 دی 1394, 22:14 عصر
http://www.dotnettips.info/post/1418/modelbinder-%D8%B3%D9%81%D8%A7%D8%B1%D8%B4%DB%8C-%D8%AF%D8%B1-asp-net-mvc?updated=1394-04-25-16-36

phpphp7
سه شنبه 15 دی 1394, 23:32 عصر
سلام دوستان

این model binder خیلی سخته

الان من یک کلاس ساختم و کدهای زیر رو داخلش گذاشتم:



using System;
using System.Globalization;
using System.Web.Mvc;

namespace MvcApplication7.Binders
{
public class PersianDateModelBinder : IModelBinder
{

public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var valueResult = bindingContext.ValueProvider.GetValue(bindingConte xt.ModelName);
var modelState = new ModelState { Value = valueResult };
object actualValue = null;
try
{
var parts = valueResult.AttemptedValue.Split('/'); //ex. 1391/1/19
if (parts.Length != 3) return null;
int year = int.Parse(parts[0]);
int month = int.Parse(parts[1]);
int day = int.Parse(parts[2]);
actualValue = new DateTime(year, month, day, new PersianCalendar());
}
catch (FormatException e)
{
modelState.Errors.Add(e);
}

bindingContext.ModelState.Add(bindingContext.Model Name, modelState);
return actualValue;
}
}
}






کد زیر رو هم داخل app-start گذاشتم :


ModelBinders.Binders.Add(typeof(DateTime), new PersianDateModelBinder());





حالا باید چیکار کنم ؟!؟! تاریخ شمسی من در داخل یک متغیر به نام FirstDate می باشد

phpphp7
سه شنبه 15 دی 1394, 23:41 عصر
سلام دوستان

این model binder خیلی سخته

الان من یک کلاس ساختم و کدهای زیر رو داخلش گذاشتم:



using System;
using System.Globalization;
using System.Web.Mvc;

namespace MvcApplication7.Binders
{
public class PersianDateModelBinder : IModelBinder
{

public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var valueResult = bindingContext.ValueProvider.GetValue(bindingConte xt.ModelName);
var modelState = new ModelState { Value = valueResult };
object actualValue = null;
try
{
var parts = valueResult.AttemptedValue.Split('/'); //ex. 1391/1/19
if (parts.Length != 3) return null;
int year = int.Parse(parts[0]);
int month = int.Parse(parts[1]);
int day = int.Parse(parts[2]);
actualValue = new DateTime(year, month, day, new PersianCalendar());
}
catch (FormatException e)
{
modelState.Errors.Add(e);
}

bindingContext.ModelState.Add(bindingContext.Model Name, modelState);
return actualValue;
}
}
}






کد زیر رو هم داخل app-start گذاشتم :


ModelBinders.Binders.Add(typeof(DateTime), new PersianDateModelBinder());





حالا باید چیکار کنم ؟!؟! تاریخ شمسی من در داخل یک متغیر به نام FirstDate می باشد

salar IT man
چهارشنبه 16 دی 1394, 12:07 عصر
سلام دوستان

این model binder خیلی سخته

حالا باید چیکار کنم ؟!؟! تاریخ شمسی من در داخل یک متغیر به نام FirstDate می باشد


کار شما با معرفی PersianDateModelBinder به عنوان پیش فرض برای DateTime ، تمام شده است. بقیه کار های خودکار است. بهتره مطالعه کنید (http://www.dotnettips.info/post/1418/modelbinder-%D8%B3%D9%81%D8%A7%D8%B1%D8%B4%DB%8C-%D8%AF%D8%B1-asp-net-mvc) چون موضوع سختی وجود ندارد.

phpphp7
چهارشنبه 16 دی 1394, 16:41 عصر
کار شما با معرفی PersianDateModelBinder به عنوان پیش فرض برای DateTime ، تمام شده است. بقیه کار های خودکار است. بهتره مطالعه کنید (http://www.dotnettips.info/post/1418/modelbinder-%D8%B3%D9%81%D8%A7%D8%B1%D8%B4%DB%8C-%D8%AF%D8%B1-asp-net-mvc) چون موضوع سختی وجود ندارد.
سلام

یعنی خودش خودکار انجام میشه ؟!!؟

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

درضمن من از کتابخانه parsi جهت شمسی سازی استفاده نمیکنم !

الان در کد زیر :



private DateTime GetMiladiDate(HttpRequestBase request) {
int day = int.Parse(request.Form.Get("Day"));

int month = int.Parse(request.Form.Get("Month"));
int years = int.Parse(request.Form.Get("Years"));

//Convert shamsi to miladi
return Persia.Calendar.ConvertToGregorian(years, month, day, DateType.Gerigorian);
}





من به جای Day,Mount,Years باید چه متغیری بزارم ؟!