PDA

View Full Version : استفاده از تاریخ شمسی در سایت



s20200
سه شنبه 31 مرداد 1385, 18:02 عصر
در قسمتی از وب سایت می خواهم از تاریخ شمسی استفاده کنم به طوری که در هنگام نمایش لیست مقالات، تاریخ درج آنها به صورت شمسی باشد و بتوان مقالات مربوط به یک تاریخ خاص را نمایش داد.
حالا سوال من این است که در هنگام درج مطالب در database باید تاریخ های موجود در db به صورت هجری شمسی باشد و یا تاریخ را به صورت قمری ذخیره کرده و در هربار نمایش فیلد تاریخ موجود در db را تبدیل کنم.

مهدی کرامتی
سه شنبه 31 مرداد 1385, 19:46 عصر
اگه میخوای روی تاریخ های فوق محاسبه انجام بدی بهتره بصورت میلادی در دیتابیس ذخیره کنی، وگرنه روش دوم هم ایرادی ندارد.

s20200
پنج شنبه 02 شهریور 1385, 08:47 صبح
روش خاصی وجود داره مه در هنگام LOAD صفحه تمام تاریخ ها را به شمسی تبدیک کنه.
آخه از سایت SHAHABFAR یک فایل گرفتم ولی نمیدونم چگونه از اون در ابعاد زیر استفاده کنه؟

مهدی کرامتی
جمعه 03 شهریور 1385, 08:39 صبح
پس از باز کردن صفحه مورد نظر با زدن کلید F7 به حالت نمایش کد بروید.
این کد را در انتهای کلاس جاری اضافه کنید:

public string GetPersianString(DateTime input)
{
System.Globalization.PersianCalendar pcal =
new System.Globalization.PersianCalendar();
return pcal.GetYear(input).ToString()
+ '/' + pcal.GetMonth(input).ToString()
+ '/' + pcal.GetDayOfMonth(input).ToString();
}

به حالت ویرایش صفحه برگردید (با زدن Shift+F7).
گزینه Edit Columns گرید مورد نظر را انتخاب کنید.
یک Template Field به لیست ستونها اضافه کنید.
گزینه Edit Templates گرید مورد نظر را انتخاب کنید.
یک Label در Template مورد نظر قرار دهید.
گزینه Edit Data Binding لیبل فوق را انتخاب کنید.
کد زیر را در Custom Binding فیلد Text وارد کنید:

GetPersianString((DateTime)Eval("OrderDate"))سورس کامل صفحه فوق (Default.aspx):


ی╗┐<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="OrderID"
DataSourceID="SqlDataSource1" CellPadding="4" Font-Names="Tahoma" Font-Size="11px" ForeColor="#333333" GridLines="None" Width="500px">
<Columns>
<asp:BoundField DataField="OrderID" HeaderText="OrderID" InsertVisible="False" ReadOnly="True"
SortExpression="OrderID" />
<asp:BoundField DataField="ShipName" HeaderText="ShipName" SortExpression="ShipName" />
<asp:BoundField DataField="OrderDate" HeaderText="OrderDate" SortExpression="OrderDate" />
<asp:TemplateField HeaderText="OrderDate (In Persian)">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# GetPersianString((DateTime)Eval("OrderDate")) %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
<EditRowStyle BackColor="#999999" />
<SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
<PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
<HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<AlternatingRowStyle BackColor="White" ForeColor="#284775" />
</asp:GridView>

</div>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
SelectCommand="SELECT [OrderID], [ShipName], [OrderDate], [ShippedDate], [ShipCity] FROM [Orders Qry]">
</asp:SqlDataSource>
</form>
</body>
</html>
سورس Code Behaind صفحه فوق:

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}

public string GetPersianString(DateTime input)
{
System.Globalization.PersianCalendar pcal =
new System.Globalization.PersianCalendar();
return pcal.GetYear(input).ToString()
+ '/' + pcal.GetMonth(input).ToString()
+ '/' + pcal.GetDayOfMonth(input).ToString();
}
}

موفق باشید.