PDA

View Full Version : سوال: درج ساعت به وقت ایران در دیتابیس



mbasirati
پنج شنبه 12 اردیبهشت 1392, 13:33 عصر
سلام
من یه جدول دارم که یه فیلد ساعت داره که از طریق سی شارپ مقدار دهی میشه (با استفاده از datetime)
وقتی پروژه رو آپ میکنم و تست میکنم ساعتی که درج میکنه به وقت ایران نیس.

چه جوری میتونم (بدون توجه به مکان سرور) ساعت رو به وقت ایران به دست بیارم؟

dharmaa
پنج شنبه 12 اردیبهشت 1392, 17:08 عصر
سلام .
طبیعیه که تاریخ رو اونطور که میخواهید نشون نمیده. شما میتونید فیلد ساعتو از توی بانک بخونید وبفرستید به تابعی که تبدیلش کنه به تاریخ پرشین.
تابع تبدیل تاریخ به پرشین هم فراوونه،میتونید به راحتی پیدایش کنید و یا اینکه خودتون بنویسینش...

fakhravari
پنج شنبه 12 اردیبهشت 1392, 17:09 عصر
باید دقیقه و ساعت -یا+ کنید بسته به اختلافی که میده

mbasirati
جمعه 13 اردیبهشت 1392, 00:20 صبح
یعنی من باید اول ببینم سرور اختلافش با ساعت ایران چقدره بعد ساعت ایران رو حساب کنم؟
خب اینجوری اگه سرور عوض بشه من دوباره باید کدم رو عوض کنم.
راه ساده تر و منطقی تری وجود نداره؟

fakhravari
جمعه 13 اردیبهشت 1392, 00:41 صبح
خیر.
شما باید یک کلاس بسازید که خروچیش زمان باشه اینجوری در تمام سایت با یک تغیر همه تغیر میکنه

mbasirati
جمعه 13 اردیبهشت 1392, 00:44 صبح
خیر.
شما باید یک کلاس بسازید که خروچیش زمان باشه اینجوری در تمام سایت با یک تغیر همه تغیر میکنه

شما منظور منو متوجه نشدی.
من الان اول باید بفهمم اختلاف ساعت سرور با ساعت ایران چقدره و بعد کمو زیاد کنم تا ساعت رو به دست بیارم. خب وقتی هاست سایت عوض بشه و سرورش یه جای دیگه باشه من دوباره باید کد (حتی همون کلاس به قول شما) رو تغییر بدم.

راه دیگه ای وجود نداره؟

fakhravari
جمعه 13 اردیبهشت 1392, 01:11 صبح
خیر.
چون ساعات بسته به هر منطقه متفاوط
وقتی datetime.now میگیرید ساعت هاست دارید میگیرید

mbasirati
جمعه 13 اردیبهشت 1392, 01:18 صبح
من یه راهی به دست آوردم که تست هم کردم و به نظرم درسته. اگه جاییش اشتباهه بهم بگید.
من از این کد استفاده میکنم اینجوری همیشه ساعت رو به وقت ایران به من میده حتی Time zone ویندوزم رو هم عوض کردم بازم درست بهم ساعت رو نشون داد.

DateTime dt1 = DateTime.UtcNow;
if (!dt1.IsDaylightSavingTime())
dt1 = dt1.AddHours(4);
else
dt1 = dt1.AddHours(3);
dt1 = dt1.AddMinutes(30);

فک میکنم دیگه به مکان سرور هم بستگی نداره و مشکل حله.

fakhravari
جمعه 13 اردیبهشت 1392, 01:25 صبح
خب درسته.
اما باید همیشه سرور به وقت استاندارد خارجکی باشه. و گر نه خرابه

mbasirati
جمعه 13 اردیبهشت 1392, 01:28 صبح
خب درسته.
اما باید همیشه سرور به وقت استاندارد خارجکی باشه. و گر نه خرابه

نه دیگه. مهم نیس ساعت سرور به چه وقتی باشه.
گفتم که من الان Time zone ویندوزم رو هم تغییر دادم و یه چیز دیگه گذاشتم ولی بازم ساعت رو به وقت ایران داد.
درواقع متد UtcNow ساعت رو به وقت گرینویچ میده. یعنی میاد به Time zone سیستم (سرور) نگاه میکنه و خودش ساعت استاندارد جهانی رو به دست میاره (البته فک میکنم)

arefba
جمعه 13 اردیبهشت 1392, 01:37 صبح
http://www.codeproject.com/Tips/344290/Use-a-Persian-calender-in-NET-4