نمایش روز و ساعت گذشته از انتشار مطلب در Asp.Net

پنجشنبه 28 خرداد 1394

در این مقاله قصد داریم که نحوه محاسبه تعداد روز و ساعت گذشته از انتشار مطلب را توسط سی شارپ محاسبه کرده و در Asp نمایش دهیم .

نمایش روز و ساعت گذشته از انتشار مطلب در Asp.Net

ابتدا یک کلاس می سازیم برای قالب و فرمت نمایش

نام این کلاس را Article میزاریم

    public class Article
    {
        public string Title { get; set; }

        public DateTime DateTime { get; set; }

        public string TimeLeft { get; set; }
    }

 

Title برای عنوان مقاله و DateTime برای تاریخ درج و TileLeft برای مدت زمان گذشته از انتشار مطلب .

یک صفحه با نام Default.aspx ایجاد میکنیم و در آن یک DataList قرار میدهیم .

        <asp:DataList ID="DataList1" runat="server">
            <ItemTemplate>
                <h3><%#Eval("Title") %></h3>
                <p>انتشار <%#Eval("TimeLeft") %></p>
                <hr/>
            </ItemTemplate>
        </asp:DataList>

سپس یک متد با نام List برای ساخت یک لیست از جنس کلاس Article ایجاد میکنیم

        public List<Article> List()
        {
            List<Article> list=new List<Article>();

            Article a1=new Article(){Title = "مرجع تخصصی برنامه نویسان" ,DateTime = DateTime.Now.AddDays(-7).AddMinutes(-23)};
            Article a2 = new Article() { Title = "ایمان مدائنی مدیر سایت", DateTime = DateTime.Now.AddDays(-2).AddHours(-2).AddMinutes(-1) };
            Article a3 = new Article() { Title = "زکات علم نشر آن است", DateTime = DateTime.Now.AddDays(-6).AddMinutes(-20) };

            list.Add(a1);
            list.Add(a2);
            list.Add(a3);


            return list;
        }

 

در متد بالا بعلت نداشتن بانک اطلاعاتی مجبور شدیم اطلاعات را دستی وارد کنیم و تاریخ را برای چند روز قبل درج میکنیم .

برای محاسبه اختلاف تاریخ یک کلاس ایجاد میکنیم با نام ReturnTimeArticle و در این کلاس یک متد با از نوع static با نام calculatDate ایجاد میکنیم که این متد یک ورودی از جنس DateTime دارد

        public static string calculatDate(DateTime value)
        {
            DateTime dtNow = DateTime.Now;

            TimeSpan dt = (dtNow - value);


            string Text = "در ";

            if (dt.Days > 0)
            {
                Text += dt.Days + "روز ، ";
            }
            if (dt.Hours > 0)
            {
                Text += dt.Hours + "ساعت ، ";
            }

            if (dt.Minutes > 0)
            {
                Text += dt.Minutes + "دقیقه  ";
            }
            Text +=" قبل";
            return Text;
        }

در نهایت در رویداد Load صفحه Defalt.aspx لیست را فراخوانی کرده و با یک حلقه foreach تاریخ را به متد calculatDate ارسال کرده و جواب را در TimeLeft قرار میدیم

        protected void Page_Load(object sender, EventArgs e)
        {
            List<Article> articlelist = List();
            foreach (var article in articlelist)
            {
                article.TimeLeft = ReturnTimeArticle.calculatDate(article.DateTime);
            }

            DataList1.DataSource = articlelist;
            DataList1.DataBind();
        }

 

خروجی به شکل زیر است

فایل های ضمیمه

ایمان مدائنی

نویسنده 1299 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید