ساعت هاست با ایران متفاوت هست
با چه کدی میتونم این مشکل را حل کنم
( به جز راه حل اضافه یا کم کردن ساعت و دقیقه از ساعت هاست )
ساعت هاست با ایران متفاوت هست
با چه کدی میتونم این مشکل را حل کنم
( به جز راه حل اضافه یا کم کردن ساعت و دقیقه از ساعت هاست )
آخرین ویرایش به وسیله mehr83 : چهارشنبه 25 فروردین 1389 در 01:05 صبح
می تونی ساعتش رو به gmt تبدیل کنی بعد اختلاف ساعت تهران یا هرجایی که می خوای رو بهش اضافه کنی
DateTime.UtcNow.AddMinutes(210)
آخرین ویرایش به وسیله silverfox : چهارشنبه 03 تیر 1388 در 10:00 صبح
الان با datetime زمان و تاریخ سرور رو گرفتم و بعد با utcnow به universal یا همون گرینویچ تبدیل کردم 210 دقیقه هم همون 3ساعت و نیمه که تهران از گرینویچ جلوتره
پس با این وجود دیگه فرقی نمیکنه که هاستمون رو چه دیتاسنتری و تو چه کشوری باشه . چون به هر حال ساعت با گرینویچ ست میشه؟؟و بعد با utcnow به universal یا همون گرینویچ تبدیل کردم
درسته؟؟
در ضمن از شما میخوام که یه سری هم به این تاپیک بزنید . موضوعش خیلی با این تاپیک فرق نمیکنه
https://barnamenevis.org/showthread.php?t=164553
ممنون
دوست من این کد شما دقیقاً یه ساعت عقبتر رو نشون میده
من اون کد رو به صورت زیر تغییر دادم و اختلاف زمان یک ساعت جبران شد
<%=DateTime.UtcNow.AddHours(+4.5).ToString("HH:mm" )%>
ولی خوب ساعت تهران باید رو +3.5 ساعت یا همون 210 دقیقه باشه . تو این کد من مجبور شدم اون رو روی 4 ساعت و نیم تنظیم کنم تا جواب بگیرم
نظر شما راجع به این مشکل چیه؟
-------
در ضمن تمام ساعتهای خونه ما تنظیمه و مشکل از اونا نیست
*بله با این کد مهم نیست سرور کجاست البته می شد ساعت سرور رو گرفت و دستی اختلاف رو حساب کرد ولی این راحت تره...
*در واقع این 1 ساعتی که ما برای کوتاه شدن روز ها و اینا جا به جا می کنیم قرار داد خودمون هست ولی اختلاف ما با گرینویچ همان 3:30 است تو خود ساعت ویندوز هم نگاه کنید +3:30 هست تهران...فکر کنم اول مهر ساعت ها می رن سر جای اولشون درست میشه 3:30+
من يك تابع براي اين كار نوشتم كه فكر كنم بشه راحت ازش استفاده كرد. البته قبلش بايد تفاوت ساعت سرور هاست رو بگريد كه اونم خيلي ساده هست. بعد توي اين تابع ازش استفاده كنيد.
public static string shamsi(int g_y1, int g_m1, int g_d1, string FormatDate)
{
byte[] g_days_in_month = new byte[] { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
byte[] j_days_in_month = new byte[] { 31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 29 };
int g_y = 0;
int g_m = 0;
int g_d = 0;
string hh = "";
string mmm = "";
string r = FormatDate;
if ((g_y1 <= 0))
{
g_y = DateTime.Now.AddMinutes(nazari.timediff()).Year;
g_m = DateTime.Now.AddMinutes(nazari.timediff()).Month;
g_d = DateTime.Now.AddMinutes(nazari.timediff()).Day;
hh = DateTime.Now.AddMinutes(nazari.timediff()).Hour.To String();
mmm = DateTime.Now.AddMinutes(nazari.timediff()).Minute. ToString();
}
else
{
g_y = g_y1;
g_m = g_m1;
g_d = g_d1;
hh = DateTime.Now.Hour.ToString();
mmm = DateTime.Now.Minute.ToString();
}
int gy = g_y - 1600;
int gm = g_m - 1;
int gd = g_d - 1;
int g_day_no = 365 * gy + nazari.div((gy + 3), 4) - nazari.div((gy + 99), 100) + nazari.div((gy + 399), 400);
int i;
for (i = 0; i < gm; ++i)
g_day_no += g_days_in_month[i];
if (gm > 1 && ((gy % 4 == 0 && gy % 100 != 0) || (gy % 400 == 0)))
g_day_no++;
g_day_no += gd;
int j_day_no;
j_day_no = g_day_no - 79;
int j_np = nazari.div(j_day_no, 12053);
j_day_no = j_day_no % 12053;
int jy = 979 + 33 * j_np + 4 * nazari.div(j_day_no, 1461);
j_day_no %= 1461;
if (j_day_no >= 366)
{
jy += nazari.div(j_day_no - 1, 365);
j_day_no = (j_day_no - 1) % 365;
}
for (i = 0; i < 11 && j_day_no >= j_days_in_month[i]; ++i)
j_day_no -= j_days_in_month[i];
int jm = i + 1;
int jd = j_day_no + 1;
string yy = jy.ToString();
string mm = jm.ToString();
string dd = jd.ToString();
if (mmm.Length == 1)
r = r.Replace("MM", "0" + mmm);
else r = r.Replace("MM", mmm);
r = r.Replace("M", mmm);
if (hh.Length == 1)
r = r.Replace("hh", "0" + hh);
else r = r.Replace("hh", hh);
r = r.Replace("h", hh);
if (dd.Length == 1)
r = r.Replace("dd", "0" + dd);
else r = r.Replace("dd", dd);
r = r.Replace("d", dd);
if (mm.Length == 1)
r = r.Replace("mm", "0" + mm);
else r = r.Replace("mm", mm);
r = r.Replace("m", mm);
r = r.Replace("yyyy", yy);
r = r.Replace("yy", yy.Substring(2, 2));
return r;
}
public static int timediff()
{
return 0;// (4 * 60) + 30;
}
تفاوت ساعت رو به دقيقه بنويسيد
بعد براي استافده مثلا مي تونيد اينطوري بنويسيد
label1.text=shamsi(2009,6,6,"yy/mm/dd hh:MM")
توجه داشته باشيد كه MM مربوط به ساعت حتما بايد با حروف بزرگ باشد
برای 3 تا شهر درست کردم...
از ddl با انتخاب شهر اختلاف زمانی رو می خونه و به گرینویچ اضافه می کنه...
دوستان لطف کنن هر از گاهی یه پست به این تاپیک بفرستن تا عزیزان دیگه هم ببینن و ازش بهره ببرن
ممنون
به زودی یه کامپوننت واسش مینویسم تا تمام شهرها رو پوشش بده
یا حق
خوب برای تاریخ چه کاری انجام بدیم؟
آخرین ویرایش به وسیله mehr83 : چهارشنبه 25 فروردین 1389 در 01:06 صبح
تاریخ اگه به یک روز قبل یا بعد بره خود دات نت درستش می کنه تا اونجا که من دیدم...
یعنی الان تهران ساعت 1:00 AM هست و امروز 2009/6/28 ولی تو فلان شهر که 3 ساعت از ما عقب تره ساعت 10:00 PM هست روز 2009/6/27 وقتی با دات نت با addhours 3 ساعت کم می کنی خودش Date رو هم تغییر می ده به 27م
آخرین ویرایش به وسیله محمد متاله : یک شنبه 03 مهر 1390 در 23:34 عصر
با این کد دیگه daylightsaving یا همون یک ساعت اختلاف شش ماه اول هم خودش محاسبه میکنه تاریخها رو هم درست محاسبه میکنه
BirthDate = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(DateTim e.Now, TimeZoneInfo.Utc.Id, "Iran Standard Time")