نمایش روز و ساعت گذشته از انتشار مطلب در Asp.Net
پنجشنبه 28 خرداد 1394در این مقاله قصد داریم که نحوه محاسبه تعداد روز و ساعت گذشته از انتشار مطلب را توسط سی شارپ محاسبه کرده و در Asp نمایش دهیم .
ابتدا یک کلاس می سازیم برای قالب و فرمت نمایش
نام این کلاس را 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(); }
خروجی به شکل زیر است
- ASP.net
- 4k بازدید
- 7 تشکر