কেন টিজেড = ইউটিসি -8 ইউটিসি + 8 এর তারিখগুলি উত্পাদন করে?


25

লস অ্যাঞ্জেলেসে বর্তমান সময় 18:05। তবে আমি যখন দৌড়ে যাই TZ=UTC-8 date --iso=ns, তখন আমি পাই:

2013-12-07T10:05:37,788173835+0800

তারিখের ইউটিলিটি আমাকে বলে যে সময়টি 10:05, এবং এমনকি এটি এটি ইউটিসি +8 হিসাবে রিপোর্ট করছে। কেন?

উত্তর:


33

কারণটি হ'ল পসিক্স সময় অঞ্চলTZ=UTC-8 হিসাবে ব্যাখ্যা করা হয় । পসিক্স টাইমজোন ফর্ম্যাটে, 3 টি অক্ষর হ'ল টাইমজোন সংক্ষিপ্তকরণ (যা স্বেচ্ছাসেবী) এবং নম্বরটি টাইমজোনটি ইউটিসির পিছনে যে ঘন্টা রয়েছে তার সংখ্যা । সুতরাং একটি টাইমজোন সংক্ষেপিত "ইউটিসি" সংক্ষেপিত যা প্রকৃত ইউটিসি, বা ইউটিসি + 8 ঘন্টা পিছনে −8 ঘন্টা পিছনে।UTC-8

(এটি সেভাবে কাজ করে কারণ ইউনিক্স মার্কিন যুক্তরাষ্ট্রে উন্নত হয়েছিল, যা ইউটিসির পিছনে রয়েছে This এই ফর্ম্যাটটি মার্কিন সময়সীমাগুলি EST5, CST6, ইত্যাদি হিসাবে উপস্থাপনের অনুমতি দেয়)

আপনি এই উদাহরণগুলির দ্বারা যা ঘটছে তা দেখতে পাবেন:

$ TZ=UTC-8 date +'%Z %z'
UTC +0800
$ TZ=UTC8 date +'%Z %z'
UTC -0800
$ TZ=FOO-8 date +'%Z %z'
FOO +0800

আইএসও -0800টাইমজোন ফর্ম্যাটটি বিপরীতমুখী পদ্ধতি গ্রহণ করে, -জোনটি ইউটিসির পিছনে রয়েছে এবং +জোনটি ইউটিসির চেয়ে এগিয়ে রয়েছে তা নির্দেশ করে।


আহ তাই আমি আসলে চেয়েছিলেন কি ছিল TZ=PST+8 date। ধন্যবাদ। আমি এই ব্যাখ্যাটিও এর নীচে পেয়েছি man timezone: "স্ট্যান্ড স্ট্রিং টাইমজোনটির নাম নির্দিষ্ট করে এবং অবশ্যই তিন বা ততোধিক বর্ণানুক্রমিক অক্ষর হওয়া উচিত The ইউটিসি)। স্থানীয় সময় অঞ্চলটি প্রধান মেরিডিয়ান এর পশ্চিমে এবং পূর্বদিকে নেতিবাচক হলে অফসেটটি ইতিবাচক।
অ্যালেক্স হেনরি

3
@Alex না, আপনি কি সত্যিই চান TZ=America/Los_Angeles। আপনি ভুলে যাচ্ছেন যে প্যাসিফিক সময়টি দিনের আলো সংরক্ষণের সময় -7 হয়।
ম্যাট জনসন-পিন্ট

3
@MattJohnson, আপনি কি বলতে চান TZ=:America/Los_Angeles। কোলনটি নির্দেশ করে যে এটি একটি ওলসন টাইমজোন ফাইল। এবং অন্য একটি মন্তব্যে তিনি উল্লেখ করেছিলেন যে তিনি দিবালোকের সময় সাশ্রয় করার সময়কে উপেক্ষা করতে চান, যা তা করবে না।
সিজেএম

@ সিজেএম, ধন্যবাদ, আপনি কোলন সম্পর্কে ঠিক বলেছেন, এবং আমি এই মন্তব্যটি দেখিনি।
ম্যাট জনসন-পিন্ট

আমেরিকা, বিশ্বের জন্য কারণ এটি আমাদের হতে হবে মানে EST-5 CST-6
ইভান ক্যারল 21

7

আপনি যখনই টাইমজোনটি +/- 00:00 বিন্যাসে নির্দিষ্ট করেন, আপনি একটি অফসেট নির্দিষ্ট করে থাকেন , আসল টাইমজোনটি নয়। GNU libc ডকুমেন্টেশন থেকে (যা পসিক্স মান অনুসরণ করে):

অফসেট একটি সমন্বিত ইউনিভার্সাল সময় মান পেতে আপনাকে স্থানীয় সময় যুক্ত করতে হবে এমন সময় মান নির্দিষ্ট করে। এতে [+ | -] এইচএইচ [[মিমি [: এসএস]] এর মতো বাক্য গঠন রয়েছে। স্থানীয় সময় অঞ্চলটি প্রাইম মেরিডিয়ান এর পশ্চিমে এবং এটি পূর্বে থাকলে negativeণাত্মক হয় positive ঘন্টাটি 0 এবং 23 এর মধ্যে এবং মিনিট এবং সেকেন্ড 0 এবং 59 এর মধ্যে হতে হবে।

এ কারণেই এটি আপনার প্রত্যাশার বিপরীত বলে মনে হচ্ছে।


2

Why?

কারণ পসিক্স এটির প্রয়োজন

যদি '-' এর আগে হয়, টাইমজোনটি প্রধানমন্ত্রী মেরিডিয়ান এর পূর্বে হবে; অন্যথায়, এটি পশ্চিমে হবে (যা +চ্ছিক '+' পূর্ববর্তী দ্বারা নির্দেশিত হতে পারে)।

সুতরাং, এটি [1] এর নিকটে সময় দেবে Los Angeles(সময় অঞ্চল পাঠ্যের জন্য কোনও 3 টি লেটার লেবেল সহ):

$ TZ=ANY8 date "+%Y-%m-%d %H:%M:%S %Z%z"
2016-04-23 10:47:12 ANY-0800

$ TZ=GMT+8 date "+%Y-%m-%d %H:%M:%S %Z%z"
2016-04-23 10:47:12 GMT-0800

এবং এটি কাছাকাছি সময় দিতে হবে Shanghai, Chinaবা Perth, Australia:

$ TZ=ANY-8 date "+%Y-%m-%d %H:%M:%S %Z%z"
2016-04-24 02:47:12 ANY+0800

$ TZ=CST-8 date "+%Y-%m-%d %H:%M:%S %Z%z"
2016-04-23 02:47:12 CST+0800

[1] কাছাকাছি কারণ সেখানে কিছু ডিএসটি (দিবালোক সংরক্ষণের সময়) কার্যকর হতে পারে যা প্রকৃত "স্থানীয় সময়" এ স্থানান্তর করে।


1

বিকল্প পদ্ধতি হিসাবে zdumpআপনি অন্যান্য সময় অঞ্চল + অফসেটগুলিতে বর্তমান সময়টি প্রদর্শন করতে কমান্ডটি ব্যবহার করতে পারেন ।

জেডডাম্প কমান্ড লাইনে নামের প্রতিটি জোনেনেমে বর্তমান সময় মুদ্রণ করে।

একই বিধি সময় অঞ্চলগুলির সাথে প্রযোজ্য; পূর্বদিকে "এগিয়ে" থাকাকালীন প্রধান মেরিডিয়ান পশ্চিমে "পিছনে" রয়েছে।

উদাহরণ

d zdump PST PST শনিবার 7 ডিসেম্বর 03:25:27 2013 পিএসটি

আমরা এই স্ক্রিপ্টটি বেশ কয়েকটি সময় অঞ্চল + অফসেটগুলি দেখানোর জন্য তৈরি করেছি যা আমরা ব্যবহার করতে আগ্রহী zdumpএবং dateতাই আমরা সেগুলি তুলনা করতে পারি।

$ cat cmd.bash
#!/bin/bash

printf "\ndate: %s\n\n" "$(date)"

for tz in EST PST PST+8 PST-8 UTC UTC+8 UTC-8; do
  echo "-- timezone $tz"
  printf "zdump: %s\n" "$(zdump $tz)"
  printf "date:         %s\n" "$(TZ=$tz date +'%a %b %d %T %Y - (%Z %z)')"
  echo ""
done

তারপরে আপনি এটি চালানোর সময় আপনি এর সাথে তুলনা দেখতে zdumpপাবেন date:

$ ./cmd.bash 

date: Sat Dec  7 02:59:05 EST 2013

-- timezone EST
zdump: EST  Sat Dec  7 02:59:05 2013 EST
date:         Sat Dec 07 02:59:05 2013 - (EST -0500)

-- timezone PST
zdump: PST  Sat Dec  7 07:59:05 2013 PST
date:         Sat Dec 07 07:59:05 2013 - (PST +0000)

-- timezone PST+8
zdump: PST+8  Fri Dec  6 23:59:05 2013 PST
date:         Fri Dec 06 23:59:05 2013 - (PST -0800)

-- timezone PST-8
zdump: PST-8  Sat Dec  7 15:59:05 2013 PST
date:         Sat Dec 07 15:59:05 2013 - (PST +0800)

-- timezone UTC
zdump: UTC  Sat Dec  7 07:59:05 2013 UTC
date:         Sat Dec 07 07:59:05 2013 - (UTC +0000)

-- timezone UTC+8
zdump: UTC+8  Fri Dec  6 23:59:05 2013 UTC
date:         Fri Dec 06 23:59:05 2013 - (UTC -0800)

-- timezone UTC-8
zdump: UTC-8  Sat Dec  7 15:59:05 2013 UTC
date:         Sat Dec 07 15:59:05 2013 - (UTC +0800)

আমি দিবালোক সঞ্চয়গুলি উপেক্ষা করে প্যাসিফিক স্ট্যান্ডার্ড টাইমে বর্তমান সময়টি পেতে চাইছি।
অ্যালেক্স হেনরি

1
আমাকে এটি হ্রাস করতে হয়েছিল কারণ আপনি অনুমান করছেন যে "ইউটিসি -8" ভুল। এটি সঠিক, এটি ব্যবহারকারী যা প্রত্যাশা করে তা করে না। আমি মনে করি না যে এটি কেন এমনভাবে কাজ করে এমন প্রশ্নের প্রশ্নের উত্তর দেয়।
জর্ডানম

@ জর্ডানম - পরিষ্কার দেখুন see
slm

1
এটি এখনও যা ঘটছে তা ব্যাখ্যা করে তবে কেন এবং "কেন" ওপি যা জিজ্ঞাসা করছে তা নয়। আমি আমার ডাউনভোটটি সরিয়ে ফেলব তবে এখনও মনে হয় না যে এটি প্রশ্নের উত্তম উত্তর।
জর্ডানম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.