-

نوع نمایش زمانی که از مطلب گذشته در asp.net

چه چور زمان به صورت زیر نمایش بدیم؟

1433 بازدید | 0 پاسخ | ۱۳۹۸/۰۶/۳۰ ۱۲:۴۹
بسته شده
پرسیده شده توسط
ابوالفضل احمدی
ابوالفضل احمدی
۱۳۹۸/۰۶/۳۰ ۱۲:۴۹

پاسخ‌ها

9
-

سلام

میبایست از کلاس یا dll های مخصوص اینکار مانند PersianToolsPack استفاده کنید. و تاریخ رو تبدیل به string کنید و نمایش بدید


موفق باشید.

۱۳۹۸/۰۶/۳۰ ۱۴:۱۱
تیم پیشگامیتتیم پیشگامیت
-

میشه نمونه معرفی کنی

۱۳۹۸/۰۶/۳۰ ۱۵:۰۲
ابوالفضل احمدیابوالفضل احمدی
حسین حیاتی
۱۳۹۸/۰۶/۳۰ ۱۷:۰۴

یک کتابخانه در گیت هاب در این مورد MD.PersianDateTime هست.

-

به عنوان نمونه یک کلاس به نام PersianDate ایجاد کنید و محتوای زیر را در آن Paste کنید.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;


namespace Extensions

{

    public static class PersianDate

    {

        /// <summary>

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

        /// </summary>

        /// <param name="persianDate">تاریخ شمسی</param>

        /// <returns>تاریخ میلادی</returns>

        public static DateTime ToGeorgianDateTime(this string persianDate)

        {

            int year = Convert.ToInt32(persianDate.Substring(0, 4));

            int month = Convert.ToInt32(persianDate.Substring(5, 2));

            int day = Convert.ToInt32(persianDate.Substring(8, 2));

            DateTime georgianDateTime = new DateTime(year, month, day,new System.Globalization.PersianCalendar());

            return georgianDateTime;

        }


        /// <summary>

        /// یک تاریخ میلادی را به معادل فارسی آن تبدیل میکند

        /// </summary>

        /// <param name="georgianDate">تاریخ میلادی</param>

        /// <returns>تاریخ شمسی</returns>

        public static string ToPersianDateString(this DateTime georgianDate)

        {

            System.Globalization.PersianCalendar persianCalendar = new System.Globalization.PersianCalendar();


            string year = persianCalendar.GetYear(georgianDate).ToString();

            string month = persianCalendar.GetMonth(georgianDate).ToString().PadLeft(2,'0');

            string day = persianCalendar.GetDayOfMonth(georgianDate).ToString().PadLeft(2, '0');

            string persianDateString = string.Format("{0}/{1}/{2}", year, month, day);

            return persianDateString;

        }


        /// <summary>

        /// یک تعداد روز را از یک تاریخ شمسی کم میکند یا به آن آضافه میکند

        /// </summary>

        /// <param name="georgianDate">تاریخ شمسی اول</param>

        /// <param name="days">تعداد روزی که میخواهیم اضافه یا کم کنیم</param>

        /// <returns>تاریخ شمسی به اضافه تعداد روز</returns>

        public static string AddDaysToShamsiDate(this string persianDate,int days)

        {

            DateTime dt = persianDate.ToGeorgianDateTime();

            dt = dt.AddDays(days);

            return dt.ToPersianDateString();

        }

    }

}

نحوه استفاده نیز به صورت زیر است

string mystring = DateTime.Now.ToPersianDateString();

string mystring2 = DateTime.Now.AddDaysToShamsiDate();

//و در نهایت مقدار مای استرینگ رو یه جا نشون بدید.

۱۳۹۸/۰۶/۳۰ ۱۶:۵۳
حسین حیاتیحسین حیاتی
-

کلاس AddDaysToShamsiDate() رو نمیشناسه

۱۳۹۸/۰۶/۳۰ ۲۳:۱۹
ابوالفضل احمدیابوالفضل احمدی
حسین حیاتی
۱۳۹۸/۰۶/۳۰ ۲۳:۳۵

برای تبدیل میلادی به شمسی خط دوم را پاک کنید. خط دوم کاربرد دیگه داره که توی توضیحات کلاس نوشته

-

ایا با این نوع نمایش در سئو تاثیر دارد یا خیر؟

۱۳۹۸/۰۶/۳۱ ۱۵:۰۴
ابوالفضل احمدیابوالفضل احمدی
حسین حیاتی
۱۳۹۸/۰۶/۳۱ ۱۵:۱۳

این نوع نمایش تاریخ فقط برای نمایش به کاربر هست و برای سئو باید متاتگ مخصوص با تاریخ میلادی تعریف کنید.

ابوالفضل احمدی
۱۳۹۸/۰۶/۳۱ ۱۵:۳۰

داخل Repeater اومدم به صورت زیر نوشتم خطا میده

<asp:Repeater ID="RlinkAllpost" runat="server">
<ItemTemplate>
<li>
<div class="title">
<a href='<%#Eval("ID_post","../../News/{0}/")+Eval("url_post")%>' title='<%# Eval("title_post") %>' style="font-size: 12px; color: <%# Eval("colorpost") %>"><%# Eval("title_post") %></a>
</div>
<div class="time" style="font:IranSansFaNum"><%#cmsarya.DAL.other.ConvertDateTime(Eval("title_post"))%></div>
</li>
</ItemTemplate>
</asp:Repeater>