close
تبلیغات در اینترنت
مشکلات فاصله زمانی در جاوا,مشکل منطقه زمانی در جاوا,حل مشکل منطقه زمان
صفحه اصلی پرشین استک

{ پرشین استک }

به دنیای برنامه نویسی خوش آمدید
|


پرشین استک تنها یک سایت نیست بلکه یک پروژه همگانی می باشد


تعداد مطالب :
142


تعداد توسعه دهندگان :
11


تاریخ امروز :
جمعه 29 تیر 1397

به کانال تلگرام ما بپیوندید


×

لیست سوالات من

افزودن

چرا با کم کردن این دو زمان در سال 1927 ، به نتیجه عجیبی برخورد می کنیم ؟

برنامه زیر دو رشته زمانی با یک ثانیه اختلاف را از هم جدا کرده و سپس آنها را با هم مقایسه می کند :

 

public static void main(String[] args) throws ParseException{
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String str3 = "1927-12-31 23:54:07";
String str4 = "1927-12-31 23:54:08";
Date sDt3 = sf.parse(str3);
Date sDt4 = sf.parse(str4);
long ld3 = sDt3.getTime()/1000;
long ld4 = sDt4.getTime()/1000;
System.out.println(ld4-ld3);
}

 

خروجی برنامه به صورت زیر است :

 

353

 

چرا 353 نتیجه ld4-ld3 است در حالی که باید 1 باشد ؟

به زمان ها یک ثانیه اضافه کنیم به صورت زیر :

 

String str3 = "1927-12-31 23:54:08";
String str4 = "1927-12-31 23:54:09";

 

1 نتیجه ld4-ld3 خواهد شد .

 

ورژن جاوا :

 

java version "1.6.0_22"
Java(TM) SE Runtime Environment (build 1.6.0_22-b04)
Dynamic Code Evolution Client VM (build 0.2-b02-internal, 19.0-b04-internal, mixed mode)

Timezone(`TimeZone.getDefault()`):

sun.util.calendar.ZoneInfo[id="Asia/Shanghai",
offset = 28800000,dstSavings = 0,
useDaylight = false,
transitions = 19,
lastRule = null]

Locale(Locale.getDefault()): zh_CN

 

 

پاسخ 1 :

این یک تغییر منطقه زمانی در 31 دسامبر در شانگهای است . این صفحه را برای مشاهده جزئیات درباره سال 1927 در شانگهای ببینید . در نیمه شب و در انتهای 1927 ، ساعت ها 5 دقیقه و 52 ثانیه به عقب برمی گردند . بنابراین "1927-12-31 23:54:08" در واقع دو بار اتفاق افتاده است و به نظر می رسد که جاوا آن را به عنوان دیرترین لحظه ممکن برای تاریخ/زمان محلی تجزیه می کند به همین دلیل متفاوت است .

 

پاسخ 2 :

شما با فاصله زمان محلی مواجه شده اید . وقتی که زمان استاندارد محلی در حدود یکشنبه ( 1 ژانویه 1928 ساعت 00:00:00 ) بود ، زمان به اندازه 0:05:52 به جای زمان محلی شنبه ( 31 دسامبر 1927 ساعت 23:54:08 ) ، به عقب برگشت . این عجیب نیست و تقریبا در همه جا در یک زمان و یا دیگر زمان ها اتفاق افتاده است . به دلیل اعمال سیاسی یا اداری، موقعیت های زمانی تغییر می کنند .

 

پاسخ 3 :

1. در هر جایی که ممکن است از تاریخ و زمان موجود در UTC استفاده کنید .

2. اگر نمی توانید تاریخ و زمان را در UTC نمایش دهید ، از منطقه زمانی برای نمایش استفاده کنید .

3. اگر شما نمی توانید یک تاریخ / زمان ورودی در UTC را درخواست کنید ، نیاز به یک منطقه زمانی مشخص شده است .

هنگام افزایش زمان، باید به UTC تبدیل شود و سپس آن را اضافه یا تفریق کنید. از زمان محلی فقط برای نمایش استفاده کنید. با استفاده از این راه شما می توانید بین دوره هایی که در آنها زمان یا تاریخ دوبار اتفاق می افتند ، گشت و گذار کنید . اگر به UTC تبدیل شد ، هر ثانیه را افزوده و سپس برای نمایش به زمان محلی تبدیل کنید .

 

پاسخ 4 :

به جای تبدیل تبدیل هر تاریخی ، از کد زیر استفاده کنید :

 

long i = (sDt4.getTime() - sDt3.getTime())/1000;
System.out.println(i);

 

 

و نتیجه 1 خواهد شد .

 

 

صفحه اصلی

23

25 / 06 / 1396

PERSIAN STACK


چرا گاهی اوقات API موقعیت مکانی سرویس گوگل پلی ، موقعیت مکانی اشتباهی را برمی گرداند ؟

ادامه مطلب

613

چگونه نرم افزار ضبط صدای اندرویدی بسازیم ؟

ادامه مطلب

549

چرا TextView کلمات را با حروف می شکند ؟

ادامه مطلب

497

دانلود تمامی API های اندروید

ادامه مطلب

433

قسمت شانزدهم - جدول ها در HTML

ادامه مطلب

419

چرا وبسایت تجارت الکترونیک Magento 2 در Webview اندروید کار نمی کند ؟

ادامه مطلب

363

دانلود پروژه نمایش جستجوی کتاب برای اندروید

ادامه مطلب

347

چگونه Google API برای سطح API 25 را پیدا کنیم ؟

ادامه مطلب

343

دانلود سورس کد بازی اندرویدی Klooni 1010! + فایل APK

ادامه مطلب

259

آیا راهی برای یافتن تغیرات ماه در نمای تقویم اندروید (calendar view) وجود دارد ؟

ادامه مطلب

243

در تکمیل خودکار اندروید ، دلیل dispatchProvideAutofillStructure() not laid out چیست ؟

ادامه مطلب

231

چرا زمانی که با استفاده از cordova در اندروید 7.0 ، اس ام اس ارسال می کنیم ، با اثتثنای (Exception) امنیتی مواج

ادامه مطلب

227

آموزش ساخت و شخصی سازی Navigation Drawer در اندروید استودیو

ادامه مطلب

211

دانلود تمامی نسخه های gradle برای اندروید

ادامه مطلب

195

دانلود سورس کد اپلیکیشن هواشناسی برای اندروید + فایل APK

ادامه مطلب

179

چگونه ارور com.bumptech.glide.Registry$NoModelLoaderAvailableException: Failed to find any ModelLoaders را در اندروید رفع کنیم ؟

ادامه مطلب

171

دانلود اسکریپت جاوای PS-CH# - ایجاد ورودی متنی پیشرفته

ادامه مطلب

121

دانلود کتابخانه Retrofit برای اندروید + پروژه

ادامه مطلب

117

دانلود سورس کد تمامی نسخه های تلگرام + فایل های نصبی

ادامه مطلب

113

دانلود کتابخانه GSON برای اندروید + پروژه

ادامه مطلب

111

دانلود اسکریپت جاوای PS-CH# - ایجاد ورودی متنی پیشرفته

ادامه مطلب

یکشنبه 05 آذر 1396

قسمت هفدهم - لیست ها در HTML

ادامه مطلب

یکشنبه 21 آبان 1396

چگونه می توان با استفاده از CSS ، رنگ placeholder را تغییر داد ؟

ادامه مطلب

یکشنبه 21 آبان 1396

قسمت شانزدهم - جدول ها در HTML

ادامه مطلب

شنبه 20 آبان 1396

دانلود تمامی نسخه های gradle برای اندروید

ادامه مطلب

شنبه 20 آبان 1396

قسمت پانزدهم - عکس ها در HTML

ادامه مطلب

جمعه 19 آبان 1396

قسمت چهاردهم - لینک ها در HTML

ادامه مطلب

یکشنبه 14 آبان 1396

آموزش ساخت و شخصی سازی Navigation Drawer در اندروید استودیو

ادامه مطلب

یکشنبه 14 آبان 1396

قسمت سیزدهم - CSS در HTML

ادامه مطلب

شنبه 13 آبان 1396

قسمت بیست و پنجم (قسمت آخر) - آموزش ساخت بازی حدس

ادامه مطلب

پنجشنبه 11 آبان 1396

قسمت بیست و چهارم - آموزش نحوه ی پردازش فایل ها در جاوا

ادامه مطلب

پنجشنبه 11 آبان 1396

قسمت بیست و سوم - برنامه تکمیلی جاوا (6)

ادامه مطلب

پنجشنبه 11 آبان 1396

قسمت بیست و دوم - معرفی آرایه ها در جاوا

ادامه مطلب

پنجشنبه 11 آبان 1396

قسمت بیست و یکم - برنامه تکمیلی جاوا (5)

ادامه مطلب

پنجشنبه 11 آبان 1396

قسمت بیستم - معرفی مفهوم وراثت در جاوا

ادامه مطلب

پنجشنبه 11 آبان 1396

قسمت نوزدهم - برنامه تکمیلی جاوا (4)

ادامه مطلب

پنجشنبه 11 آبان 1396

قسمت هجدهم - معرفی عبارات کنترلی در جاوا

ادامه مطلب

پنجشنبه 11 آبان 1396

قسمت هفدهم - برنامه تکمیلی جاوا (2-3)

ادامه مطلب

چهارشنبه 10 آبان 1396

چگونه در برنامه نویسی اندروید ، یک ListView با متن و عکس بسازیم ؟

ادامه مطلب

سه شنبه 09 آبان 1396

چگونه در برنامه نویسی اندروید از فونت شخصی خود استفاده کنیم ؟

ادامه مطلب

سه شنبه 09 آبان 1396

چگونه در برنامه نویسی اندروید از برنامه اسکرین شات بگیریم ؟

ادامه مطلب

آموزش استفاده از دیتابیس آماده در پروژه اندرویدی

ادامه مطلب

آموزش ساخت بوم نقاشی با استفاده از زبان جاوا - قسمت 2

ادامه مطلب

آموزش ساخت بوم نقاشی با استفاده از زبان جاوا - قسمت 1

ادامه مطلب

تفاوت بین واحد های اندازه گیری "px" , "dp" , "dip" و "sp" چیست ؟

ادامه مطلب

چگونه می توان در اندروید پروژه ای ساخت که در آن با انگشت بتوان بر روی یک بوم (Canvas) طراحی کرد ؟

ادامه مطلب

دانلود سورس کد نرم افزار نقاشی برای جاوا

ادامه مطلب

× برای نظر گذاشتن یا پاسخ دادن به سوالات باید در سایت عضو باشید !

برای حمایت از ما روی بنر های زیر کلیک کنید .

برای سفارش تبلیغات به ما ایمیل بزنید .

ارتباط با ما