نمایش روز و ساعت گذشته از انتشار مطلب در 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 تشکر