PDA

View Full Version : خواندن زمان سرور



MasoudAdmin
سه شنبه 05 آذر 1398, 07:52 صبح
با سلام
من یک برنامه دارم که دیتابیس روی سرور هست و کلاینت ها به اون وصل میشن و از طریق برنامه داده رو ذخیره میکنن. منتهی دو تا از فیلدها تاریخ و ساعت هست. چون بعضی از کلاینت ها تاریخ و ساعت سیستمشون اوکی نیست موقع ذخیره تاریخ و ساعت اشتباهی در دیتابیس ذخیره میشه. با چه کدی می تونم تاریخ و ساعت سرور رو بخونم.
در حال حاضر از کد زیر واسه تاریخ و ساعت استفاده کردم

this.tslbDate.Text=DateTime.Now.ToString();

this.tslbTime.Text = DateTime.Now.Hour.ToString("00").Trim() + ":" + DateTime.Now.Minute.ToString("00").Trim() + ":" + DateTime.Now.Second.ToString("00").Trim();
ممنون میشم راهنمایی بفرمایید.

the king
سه شنبه 05 آذر 1398, 09:21 صبح
با سلام
من یک برنامه دارم که دیتابیس روی سرور هست و کلاینت ها به اون وصل میشن و از طریق برنامه داده رو ذخیره میکنن. منتهی دو تا از فیلدها تاریخ و ساعت هست. چون بعضی از کلاینت ها تاریخ و ساعت سیستمشون اوکی نیست موقع ذخیره تاریخ و ساعت اشتباهی در دیتابیس ذخیره میشه. با چه کدی می تونم تاریخ و ساعت سرور رو بخونم.
در حال حاضر از کد زیر واسه تاریخ و ساعت استفاده کردم

this.tslbDate.Text=DateTime.Now.ToString();

this.tslbTime.Text = DateTime.Now.Hour.ToString("00").Trim() + ":" + DateTime.Now.Minute.ToString("00").Trim() + ":" + DateTime.Now.Second.ToString("00").Trim();
ممنون میشم راهنمایی بفرمایید.

چند تا مورد رو در نظر بگیرید، یکی اینکه اگه سرور ساعت UTC رو نخونید و بجایش ساعت محلی رو بخونید مهمه که بدونیم تنظیم ساعت محلی روی چه ناحیه جغرافیایی قرار داره. UTC این مزیت رو داره که به تنظیم ساعت محلی ربطی نداره.
دوم اینکه ساعت محلی تهران 3:30+ ئه و میتونیم خودمون به سادگی از روی UTC محاسبه اش کنیم.
سوم اینکه برای اینکه تنظیمات سیستم کاربر روی فرمت تاریخ و ساعت تاثیری نذاره CultureInfo رو برای تبدیل تاریخ و زمان به رشته مشخص می کنیم :


using (var connection = new SqlConnection(connectionString))
{
connection.Open();
var command = new SqlCommand("SELECT GETUTCDATE();", connection);
var utcDate = (DateTime)command.ExecuteScalar();
var iranDate = utcDate.Add(new TimeSpan(3, 30, 0));
tslbDate.Text = iranDate.ToString("yyyy/MM/dd", CultureInfo.InvariantCulture);
tslbTime.Text = iranDate.ToString("HH:mm:ss", CultureInfo.InvariantCulture);
}

MasoudAdmin
سه شنبه 05 آذر 1398, 10:46 صبح
سپاس فراوان:تشویق: