PDA

View Full Version : سوال: ثبت تاریخ در دیتابیس !!!



حسن رضازاده
شنبه 10 تیر 1391, 16:39 عصر
سلام به همه دوستان ،خيلی درباره اين مطلب گشتم اما چيزی که جواب منو به صورت کامل بده پيدا نکردم !!!
من يه مشکل کوچیک دارم ،من میخام تو سايتم ،تاريخ و ساعت رو به صورت شمسی نمايش بدم ،و اگر کاربر خواست پيامی بده يا حرکتی بزنه من اين تاريخ رو تو ديتابيس ذخيره کنم تا بعدا ازش استفاده کنم
خب تا اينجا زياد مشکل نيست ،مشکل اينه که من نميخام تاريخ و ساعت رو از طرف کلاينت بگيرم چون ممکنه درست نباشه ،کامپوننت هايی مثل پرشين از کلاينت ميگيرن که کار خراب ميشه ،ميخاستم بدونم چطور و از کجا بايد تاريخ و ساعت رو بگيرم و ذخيره کنم ؟!!!

alonemm
شنبه 10 تیر 1391, 17:01 عصر
باسلام:

از کلاس PersianCalendar که در فضای نام System.Globalization قرار دارد استفاده کنید تا تاریخ رو به صورت شمسی از سمت سرور دریافت کنید.

به مثال زیر و خروجی های متدها دقت کنید:


/ This example demonstrates the members of the PersianCalendar class.

using System;
using System.Globalization;

class Sample
{
public static void Main()
{
//--------------------------------------------------------------------------------
// Get today's date.
//--------------------------------------------------------------------------------
Console.WriteLine("\n................. Today ...........................\n");
PersianCalendar jc = new PersianCalendar();
DateTime thisDate = DateTime.Now;

// Display the current date using the Gregorian and Persian calendars.
Console.WriteLine("Today is:");
Console.WriteLine(" {0:dddd}, {0} in the Gregorian calendar.", thisDate);
Console.WriteLine(" {0}, {1}/{2}/{3} {4}:{5}:{6} in the Persian calendar.",
jc.GetDayOfWeek(thisDate),
jc.GetMonth(thisDate),
jc.GetDayOfMonth(thisDate),
jc.GetYear(thisDate),
jc.GetHour(thisDate),
jc.GetMinute(thisDate),
jc.GetSecond(thisDate));
//--------------------------------------------------------------------------------
// Fields
//--------------------------------------------------------------------------------
Console.WriteLine("\n............... Fields .............................\n");
Console.WriteLine("PersianEra = {0}", PersianCalendar.PersianEra);
//--------------------------------------------------------------------------------
// Properties
//--------------------------------------------------------------------------------
Console.WriteLine("\n............... Properties .........................\n");
Console.Write("Eras:");
foreach (int era in jc.Eras)
{
Console.WriteLine(" era = {0}", era);
}
//--------------------------------------------------------------------------------
Console.WriteLine("\nGregorian Date Range Supported by the Persian Calendar:");
Console.WriteLine(" From {0:G}", jc.MinSupportedDateTime);
Console.WriteLine(" To {0:G}", jc.MaxSupportedDateTime);
//--------------------------------------------------------------------------------
Console.WriteLine("\nTwoDigitYearMax = {0}", jc.TwoDigitYearMax);
//--------------------------------------------------------------------------------
// Methods
//--------------------------------------------------------------------------------
Console.WriteLine("\n............ Selected Methods .......................\n");

//--------------------------------------------------------------------------------
Console.WriteLine("GetDayOfYear: day = {0}", jc.GetDayOfYear(thisDate));
//--------------------------------------------------------------------------------
Console.WriteLine("GetDaysInMonth: days = {0}",
jc.GetDaysInMonth( thisDate.Year, thisDate.Month,
PersianCalendar.PersianEra));
//--------------------------------------------------------------------------------
Console.WriteLine("GetDaysInYear: days = {0}",
jc.GetDaysInYear(thisDate.Year, PersianCalendar.PersianEra));
//--------------------------------------------------------------------------------
Console.WriteLine("GetLeapMonth: leap month (if any) = {0}",
jc.GetLeapMonth(thisDate.Year, PersianCalendar.PersianEra));
//-------------------------------------------------------------
Console.WriteLine("GetMonthsInYear: months in a year = {0}",
jc.GetMonthsInYear(thisDate.Year, PersianCalendar.PersianEra));
//--------------------------------------------------------------------------------
Console.WriteLine("IsLeapDay: This is a leap day = {0}",
jc.IsLeapDay(thisDate.Year, thisDate.Month, thisDate.Day,
PersianCalendar.PersianEra));
//--------------------------------------------------------------------------------
Console.WriteLine("IsLeapMonth: This is a leap month = {0}",
jc.IsLeapMonth(thisDate.Year, thisDate.Month,
PersianCalendar.PersianEra));
//--------------------------------------------------------------------------------
Console.WriteLine("IsLeapYear: 1370 is a leap year = {0}",
jc.IsLeapYear(1370, PersianCalendar.PersianEra));
//--------------------------------------------------------------------------------

// Get the 4-digit year for a year whose last two digits are 99. The 4-digit year
// depends on the current value of the TwoDigitYearMax property.

Console.WriteLine("ToFourDigitYear:");
Console.WriteLine(" If TwoDigitYearMax = {0}, ToFourDigitYear(99) = {1}",
jc.TwoDigitYearMax, jc.ToFourDigitYear(99));
jc.TwoDigitYearMax = thisDate.Year;
Console.WriteLine(" If TwoDigitYearMax = {0}, ToFourDigitYear(99) = {1}",
jc.TwoDigitYearMax, jc.ToFourDigitYear(99));
}
}
// The example displays the following output:
// ................. Today ...........................
//
// Today is:
// Tuesday, 3/20/2012 7:54:00 AM in the Gregorian calendar.
// Tuesday, 1/1/1391 7:54:0 in the Persian calendar.
//
// ............... Fields .............................
//
// PersianEra = 1
//
// ............... Properties .........................
//
// Eras: era = 1
//
// Gregorian Date Range Supported by the Persian Calendar:
// From 3/21/0622 12:00:00 AM
// To 12/31/9999 11:59:59 PM
//
// TwoDigitYearMax = 99
//
// ............ Selected Methods .......................
//
// GetDayOfYear: day = 1
// GetDaysInMonth: days = 31
// GetDaysInYear: days = 365
// GetLeapMonth: leap month (if any) = 0
// GetMonthsInYear: months in a year = 12
// IsLeapDay: This is a leap day = False
// IsLeapMonth: This is a leap month = False
// IsLeapYear: 1370 is a leap year = True
// ToFourDigitYear:
// If TwoDigitYearMax = 99, ToFourDigitYear(99) = 99
// If TwoDigitYearMax = 2012, ToFourDigitYear(99) = 1999





موفق باشید.

ja.softeng
شنبه 10 تیر 1391, 18:18 عصر
البته یه نکته ای است که باید رعایت بشه ساعت بر اساس گرینویچ خونده بشه و 3.5 ساعت هم بهش اضافه بشه



DateTime NowDateTime = DateTime.UtcNow.AddHours(3.5);


این کد تاریخ دقیق رو میاره البته به نکته بالا هم توجه کنی


ps.GetYear(NowDateTime).ToString() + "/"
+ ps.GetMonth(NowDateTime).ToString() + "/" + ps.GetDayOfMonth(NowDateTime).ToString();

حسن رضازاده
شنبه 10 تیر 1391, 20:24 عصر
از دوستان عزيز تشکر ميکنم ،فقط يه اشکال کوچيک هست ،اونم اينه که ساعت فقط يکبار نمايش داده ميشه ،و تا رفرش بعدی همون باقی ميمونه ،چطور کاری کنم که پويا باشه ؟

fakhravari
یک شنبه 11 تیر 1391, 02:05 صبح
یه نمونه جاوا اسکریپت که ساعت / دقیقه / ثانیه دارد. 01:37:48
نمونه اخر سایت
http://a-velayat.com

حسن رضازاده
یک شنبه 11 تیر 1391, 11:25 صبح
یه نمونه جاوا اسکریپت که ساعت / دقیقه / ثانیه دارد. 01:37:48
نمونه اخر سایت
http://a-velayat.com
سلام
الان اين که کلا فرق داره با مطالب پست های قبل !!! من فقط میخاستم بدونم چطور ساعت کار کنه ،يعنی هر ثانيه چطور نمايش بدم ؟ چون با روشي که آقای alonemm گفتن ساعت به صورت ايستا هست ،اگر بخام پويا باشه چيکار بايد کنم ؟ همين

fakhravari
یک شنبه 11 تیر 1391, 12:01 عصر
باید در یک تایمر و ابدیت پنل بزارید.
http://msdn.microsoft.com/en-us/library/system.datetime.aspx
string sanie = DateTime.Now.Second.ToString();
Response.Write(sanie);

ja.softeng
یک شنبه 11 تیر 1391, 14:03 عصر
باید در یک تایمر و ابدیت پنل بزارید.
http://msdn.microsoft.com/en-us/library/system.datetime.aspx
string sanie = DateTime.Now.Second.ToString();
Response.Write(sanie);

این کار اصلا توصیه نمیشه بخاطر تغییرات ثانیه بیاییم در هر ثانیه از سرور اطلاعات رو بخونیم
به نظر من در بار اولی که صفحه لود میشه ساعت رو در تابع جاوا اسکریپت بارگذاری کنیم و بعدش رو به جاوا اسکریپت بسپاریم در کد زیر بارگذاری جاوا اسکریپت رو میزارم


protected void Page_Load(object sender, EventArgs e)
{
PersianCalendar pCalender = new PersianCalendar();
DateTime NowDateTime = DateTime.UtcNow.AddHours(3.5);
string Hour = pCalender.GetHour(NowDateTime).ToString();
string Minute = pCalender.GetMinute(NowDateTime).ToString();
string Second = pCalender.GetSecond(NowDateTime).ToString();

ClientScript.RegisterStartupScript(typeof(Page), "ClientScript",
"<script language='javascript' type='text/javascript'>showTime("
+ Hour + "," + Minute + "," + Second + ");</script> ", false);
}


در کد بالا ما سه پارامتر ساعت و دقیقه و ثانیه را به تابع جاوا اسکریپتی showTime ارسال می کنیم البته ما باید قبلا تابع showTime در صفحه داشته باشیم
خوب کار بعدی بر عهده تابع showTime است که با گرفتن این پارامترها زمان را با خاصیت innerHtml در یکی از عناصر html نمایش میده البته باید از تایمر جاوا اکریپت هم استفاده کنی

fakhravari
یک شنبه 11 تیر 1391, 15:54 عصر
سمپل پست قبلی میشود