با سلام.
من تاریخ شمسی رو بصورت text در دیتابیس ذخیره می کنم.
مشکل اینجا است که نمی توان بر اساس تاریخ مرتب سازی کرد.
حالا اگر تاریخ رو به میلادی ذخیره کنم چطور در select اونو بصورت شمسی نشون بدم؟
لطفا راهنمایی نمایید
با تشکر
سلام دوست عزیز میتونی از این متد استفاده کنی که به صورت extension هست
public static DateTime ToPersianDate(this DateTime dt) { PersianCalendar pc = new PersianCalendar(); int year = pc.GetYear(dt); int month = pc.GetMonth(dt); int day = pc.GetDayOfMonth(dt); int hour = pc.GetHour(dt); int min = pc.GetMinute(dt); return new DateTime(year, month, day, hour, min, 0); }
ممنون دوست عزیز
منظورم در دستور select هست
اگه میشه یک دستور select بنویس که در اون تاریخ های میلادی به شمسی تبدیل شوند
با تشکر
شما توی دستور select در SQL فکر نکنم بتونید این کارو انجام دهید ؟
زمانی که میخواهید اطلاعات رو لود بکنید اول روی تاریخ میلادی سورت میکنید بعد توسط این extension که دادم نمایش میدید .
مانند :
var model1 = model.OrderByDescending(p => p.ExpireDateMiladi).Single().ExpireDateMiladi.Value.ToMiladiDate();
ببخشید این دستور رو توضیح می دید؟
این دستورات entity هست . شما بگو از چه متدی استفاده میکنی ?
وب یا ویندوز ؟ واینکه ارتباط با دیتا بیس ADO هست یا Linq یا ..... ؟
برنامه وب و ارتباط با linq هست
تا model.OrderByDescending(p => p.ExpireDateMiladi) رو می فهمم
از single تا آخر رو میشه توضیح بدی؟
single ینی یک رکورد را برمیگرونه بعد از single مشخص میکنیم کدوم فیلد از این رکورد رو میخوایم نمایش بدیم . و بعدش هم همون تایعی است که تاریخ رو تبدیل میکنه شمسی که قبلا فرستادم .
حالا اگر شما بخوایید یه جدول رو کامل نمایش بدید . به جای single از لیست استفاده میکنید و تبدیل تاریخ به شمسی رو هم توی ویو انجام میدید ؟
من توی MVC دارم توضیح میدم . اگر MVC کار میکنید کدهاشو بزارم که متوجه بشید ؟
از mvc استفاده می کنم
ممنون می شم کد بزارید
توی این مثال یه اکشن داریم به اسم show user که یک لیستی از یوزرها میده به مدل :
public ActionResult ShowUsers() { var user = db.Users.Where(p => p.ID == id).tolist(); return View(user); }
ویو همین اکشن که باید اطلاعات رو نمایش بده به این صورت میشه :
<table class="table"> <tr> <th> @Html.DisplayNameFor(model => model.Name) </th> <th> @Html.DisplayNameFor(model => model.licenseNum) </th> <th> @Html.DisplayNameFor(model => model.RegisterationNum) </th> <th> @Html.DisplayNameFor(model => model.NationalIDCo) </th> <th> @Html.DisplayNameFor(model => model.EconomicCode) </th> <th> @Html.DisplayNameFor(model => model.CompanyEmail) </th> <th> @Html.DisplayNameFor(model => model.StaeID) </th> <th> @Html.DisplayNameFor(model => model.CityID) </th> <th> @Html.DisplayNameFor(model => model.CEOBirthday) </th> <th></th> </tr> @foreach (var item in Model) { <tr> <td> @Html.DisplayFor(modelItem => item.Name) </td> <td> @Html.DisplayFor(modelItem => item.licenseNum) </td> <td> @Html.DisplayFor(modelItem => item.RegisterationNum) </td> <td> @Html.DisplayFor(modelItem => item.NationalIDCo) </td> <td> @Html.DisplayFor(modelItem => item.EconomicCode) </td> <td> @Html.DisplayFor(modelItem => item.CompanyEmail) </td> <td> @Html.DisplayFor(modelItem => item.State.Title) </td> <td> @Html.DisplayFor(modelItem => item.City.Title) </td> <td> @Html.DisplayFor(modelItem => item.CEOBirthday.Value.ToMiladiDate()) </td> <td> @Html.ActionLink("نمایش", "ShowUsers", new { id = item.ID }) @Html.ActionLink("تایید", "AdminAccept", new { id = item.ID , name = item.UserName}) | @Html.ActionLink("حذف", "DeleteUser", new { id = item.ID }) </td> </tr> } </table>
قسمت قبل ار دستور for هدر جدمل هست . قیمت بعد for اطلاعات اون مدلی که به ویو پاس داده میشه . فیلد آخر تاریخ تولد هست که اینجا از اون متد استفاده کردم .
اون متد اکستنشن هم باید یه کلاس از نوع extension درست کنی و اونو بزاری تو اون تابع که به صورت زیر میشه :
using System; using System.Collections.Generic; using System.Drawing; using System.Drawing.Imaging; using System.Globalization; using System.IO; using System.Linq; using System.Text.RegularExpressions; using System.Web; using System.Web.Mvc; public static class Utilty { public static DateTime ToMiladiDate(this DateTime dt) { PersianCalendar pc = new PersianCalendar(); return pc.ToDateTime(dt.Year, dt.Month, dt.Day, dt.Hour, dt.Minute, 0, 0); } }
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)