আমি কীভাবে node.js এ ডিফল্ট টাইমজোন সেট করব?
আমি কীভাবে node.js এ ডিফল্ট টাইমজোন সেট করব?
উত্তর:
এই গুগল গ্রুপ থ্রেড অনুসারে , কোনও তারিখ ফাংশন কল করার আগে আপনি টিজেড পরিবেশ পরিবর্তনশীল সেট করতে পারেন। শুধু এটি পরীক্ষা করা হয়েছে এবং এটি কাজ করে।
> process.env.TZ = 'Europe/Amsterdam'
'Europe/Amsterdam'
> d = new Date()
Sat, 24 Mar 2012 05:50:39 GMT
> d.toLocaleTimeString()
'06:50:39'
> ""+d
'Sat Mar 24 2012 06:50:39 GMT+0100 (CET)'
আপনি যদিও টাইমজোনটি পরে পরিবর্তন করতে পারবেন না, ততক্ষণে নোড ইতিমধ্যে পরিবেশ পরিবর্তনশীলটি পড়েছেন।
process.env.TZ = 'Europe/Amsterdam'
আমার মনে হয় "সুন্দর, এখন আমি যে সমস্ত বৈধ মান নির্ধারণ করতে পারি তার তালিকা কোথায় পাব ?" এবং আমি এটি প্রতিটি বার খুঁজে পাই না।
zone.tab
that সংরক্ষণাগারে ফাইলটি পরীক্ষা করুন ।
কমপক্ষে লিনাক্স এনভায়রনমেন্টে আমার পক্ষে কাজ করার মতো আরও একটি পদ্ধতির নাম হল আপনার নোড.জেএস অ্যাপ্লিকেশনটি এভাবে চালানো:
env TZ='Europe/Amsterdam' node server.js
এটি অন্তত নিশ্চিত হওয়া উচিত যে টাইমজোনটি ইতিমধ্যে শুরু থেকেই সঠিকভাবে সেট করা আছে।
কোনও বহিরাগত মডিউল ব্যবহার না করে নোডজেজে কাস্টম টাইমজোন তারিখের সময় পাওয়ার জন্য এখানে একটি 100% কার্যকারী উদাহরণ রয়েছে:
const nDate = new Date().toLocaleString('en-US', {
timeZone: 'Asia/Calcutta'
});
console.log(nDate);
দুর্ভাগ্যক্রমে, সেটিংটি process.env.TZ
সত্যিই ভাল কাজ করে না - মূলত এটি অনির্দিষ্ট হয় যখন পরিবর্তন কার্যকর হবে)।
নোড শুরুর আগে সিস্টেমের টাইমজোনটি নির্ধারণ করা আপনার একমাত্র যথাযথ বিকল্প।
তবে, যদি আপনি এটি না করতে পারেন তবে নোড- টাইমকে একটি কাজের ভিত্তিতে ব্যবহার করা সম্ভব হবে : আপনার সময় স্থানীয় বা ইউটিসি সময়গুলিতে পান এবং সেগুলি পছন্দসই সময় অঞ্চলে রূপান্তর করুন। নোডেজে টাইমজোন অফসেট কীভাবে ব্যবহার করবেন দেখুন ? বিস্তারিত জানার জন্য.
env TZ='Europe/Amsterdam' node server.js
@ ইউহেফের সমাধান সেই ক্ষেত্রে কার্যকর হয় যেখানে আপনার অ্যাপ্লিকেশনটি কাঁটাচামচ প্রক্রিয়া নিয়ে কাজ করে না, তবে আপনি যখন কাঁটাচামচ প্রক্রিয়া নিয়ে কাজ করছেন, বিশেষত যখন আপনি অ্যাপ্লিকেশনটিকে গল্পের মতো বিল্ডিং সরঞ্জাম দিয়ে লঞ্চ করেন তখন কমান্ডটি gulp
এনভির মানগুলি গ্রহণ করবে তবে প্রক্রিয়া গুল্প দ্বারা তৈরি করা হয়নি (আপনার অ্যাপ্লিকেশন)।
এটি সমাধান করার জন্য আপনাকে এগুলি করতে হবে:
$ export TZ="Europe/Amsterdam"; gulp myTask
এটি TZ
যে কনসোলে আপনি কাজ করছেন তাতে শুরু হওয়া সমস্ত প্রক্রিয়াটির জন্য পরিবেশের পরিবর্তনশীল সেট করবে , gulp কমান্ডের পরে সম্পাদিত সমস্ত পরবর্তী প্রক্রিয়া একই উপায়ে export TZ="Europe/Amsterdam";
আবার উপসর্গের সাথে চালানোর প্রয়োজন ছাড়াই অন্তর্ভুক্ত করবে ।
Etc/UTC
এখানে নির্দিষ্ট অফসেটগুলি উপলভ্য রয়েছে Etc
তবে অফসেটটি যেটি প্রত্যাশা করবে তার বিপরীত। Etc/GMT-1
ইউটিসি + 1 ঘন্টা। দেখুনhttps://en.wikipedia.org/wiki/List_of_tz_database_time_zones
সার্ভারের সময় অঞ্চল সেট করুন এবং এনটিপি সিঙ্ক ব্যবহার করুন। সার্ভারের সময় পরিবর্তন করার জন্য এটির একটি আরও ভাল সমাধান।
সময় অঞ্চলগুলি তালিকাভুক্ত করতে
timedatectl list-timezones
টাইমজোন সেট করতে
sudo timedatectl set-timezone America/New_York
সময় অঞ্চল যাচাই করুন
timedatectl
আমি আমার সার্ভার এবং ডাটাবেসগুলির জন্য ইউটিসি টাইমজোন ব্যবহার করতে পছন্দ করি। যে কোনও রূপান্তর অবশ্যই ক্লায়েন্টের উপর পরিচালনা করা উচিত। আমরা ক্লায়েন্ট পক্ষের moment.js ব্যবহার করতে পারি।
অনেকগুলি উদাহরণ বজায় রাখাও সহজ হবে,
আমি জানি যে এই থ্রেডটি অনেক পুরানো, তবে আমি মনে করি এটি আমার মতো গুগল থেকে এখানে পৌঁছে যে কাউকে সহায়তা করবে।
জিএই ফ্লেক্স (নোডজেস) এ, আপনি অ্যাপ্লায়ার ফাইলটিতে এনভায়ারোমেন্ট ভেরিয়েবল টিজেড (অ্যাপ্লিকেশনটিতে সমস্ত তারিখের সময়সীমা পরিচালনা করে এমন এক) সেট করতে পারেন, আমি এখানে একটি উদাহরণ রেখেছি:
app.yaml
# [START env]
env_variables:
# Timezone
TZ: America/Argentina/Buenos_Aires
আমাজন এডাব্লুএস ইলাস্টিক বিয়ানস্টালকে নোড.জেএস অ্যাপ্লিকেশন মোতায়েনকারীদের জন্য এখানে একটি উত্তর । আমি এই নথিটি অন্য কোথাও দেখিনি:
এর অধীনে Configuration -> Software -> Environment Properties
, কেবল কী মান TZ
এবং আপনার সময় অঞ্চল নির্ধারণ America/Los Angeles
করুন, এবং পরিবর্তনটি প্রয়োগ করুন।
আপনি new Date().toString()
আপনার নোড অ্যাপ্লিকেশন এ আউটপুট এবং সময় অঞ্চল প্রত্যয় মনোযোগ দিয়ে প্রভাব যাচাই করতে পারেন ।
নোড 13 হিসাবে , আপনি এখন বারবার সেট করতে পারেন process.env.TZ
এবং এটি নতুন তারিখের অবজেক্টগুলির টাইমজোনগুলিতে প্রতিফলিত হবে। আমি জানি না যে আমি প্রডাকশন কোডে এটি ব্যবহার করতাম তবে এটি ইউনিট পরীক্ষায় অবশ্যই কার্যকর হবে।
> process.env.TZ = 'Europe/London';
'Europe/London'
> (new Date().toString())
'Fri Mar 20 2020 09:39:59 GMT+0000 (Greenwich Mean Time)'
> process.env.TZ = 'Europe/Amsterdam';
'Europe/Amsterdam'
> (new Date().toString())
'Fri Mar 20 2020 10:40:07 GMT+0100 (Central European Standard Time)'
set TZ='UTC' node index.js
আপনি মুহুর্তের সময় অঞ্চল নিতে পারেন । এটি আপনাকে আপনার অবস্থান সেট করতে দেয় এবং দিবালোক সংরক্ষণের সময়ও যত্ন করে।
Date
বা অন্য বিল্টিন মডিউলগুলির মাধ্যমে সম্ভব না হলে আমি এটির সুপারিশ করব না ।
কখনও কখনও আপনি ভার্চুয়াল সার্ভারে অন্য কোথাও কোড চালাচ্ছেন - NODEJS বা অন্যান্য স্বাদগুলি চলাকালীন তা কর্দমাক্ত হতে পারে।
এখানে একটি স্থিরতা রয়েছে যা আপনাকে যে কোনও সময় অঞ্চল সহজেই ব্যবহার করতে দেয়।
সময় অঞ্চলগুলির তালিকার জন্য এখানে চেক করুন
আপনার ফরমাট লাইনের বন্ধনীগুলির মধ্যে আপনার টাইম জোনের বাক্যটি লিখুন।
এই ক্ষেত্রে - আমি ইপোকটিকে পূর্বাঞ্চলে রূপান্তর করছি।
//RE: https://www.npmjs.com/package/date-and-time
const date = require('date-and-time');
let unixEpochTime = (seconds * 1000);
const dd=new Date(unixEpochTime);
let myFormattedDateTime = date.format(dd, 'YYYY/MM/DD HH:mm:ss A [America/New_York]Z');
let myFormattedDateTime24 = date.format(dd, 'YYYY/MM/DD HH:mm:ss [America/New_York]Z');
আমি এই এনপিএম প্যাকেজটি ইউনিক্স-সিস্টেম-টাইমজোন দিয়ে কাজ করি
নোড.জেএস ভি 13 এর জন্য আপডেট
যেমনটি টম উল্লেখ করেছেন, সম্পূর্ণ আইকিউ সমর্থন এখন v13 এ নির্মিত built সুতরাং সেটআপ ধাপগুলি বাদ দেওয়া যেতে পারে। আপনি কীভাবে রানটাইমে আইকিউ তৈরি করতে বা ব্যবহার করতে চান তা এখনও কাস্টমাইজ করতে পারেন: https://nodejs.org/api/intl.html
উইন্ডোজে নোড.জেএস এর জন্য আপনি নিম্নলিখিতগুলি করতে পারেন:
পূর্ণ-আইকিউ ইনস্টল করা থাকলে এটি ইনস্টল করুন, যা সঠিকভাবে তারিখের লোকাল প্রয়োগ করে
npm i full-icu
বা বিশ্বব্যাপী: npm i -g full-icu
আপনার কোডে লোকালস্ট্রিং () ব্যবহার করুন, যেমন:
new Date().toLocaleString('en-AU', { timeZone: 'Australia/Melbourne' })
ভালো কিছু উত্পাদন করা হবে: 25/02/2019, 3:19:22 pm
। আপনি যদি 24 ঘন্টা পছন্দ করেন তবে 'এন-জিবি' উত্পাদন করবে:25/02/2019, 15:19:22
নোড.জেএস এর জন্য অ্যাজুরে ওয়েব অ্যাপ্লিকেশন হিসাবে , WEBSITE_TIME_ZONE এর অ্যাপ্লিকেশন সেটিংস ছাড়াও, আপনাকে <your project>\node_modules\full-icu
অবশ্যই NODE_ICU_DATA সেট করতে হবে , অবশ্যই আপনি এনপিএম i পূর্ণ-আইকিউ করার পরে। অজুরেতে প্যাকেজটি বিশ্বব্যাপী ইনস্টল করার পরামর্শটি প্রস্তাবিত নয় কারণ ডিরেক্টরিটি অস্থায়ী এবং মুছতে পারে।
রেফার্স : 1. নোডজেএস সঠিকভাবে তারিখের লোকেল প্রয়োগ করছে না
আপনি লাইব্রেরি tzdata দিয়ে গ্লোবাল টাইমজোন কনফিগার করতে পারেন:
npm install tzdata -y
আপনার পরিবেশটি ভেরিয়েবলের সাথে উদাহরণস্বরূপ সেট করার পরে: টিজেড = আমেরিকা / বোগোতা
এবং আপনার প্রকল্পে পরীক্ষা:
new Date()
আমি আশা করি
আপনি পরিবেশের পরিবর্তনশীলকে সেট করে নোড.জেএস প্রক্রিয়া টাইমজোনকে প্রয়োগ করতে TZ
পারেনUTC
সুতরাং সমস্ত সময় UTC + 00: 00 এ পরিমাপ করা হবে
সম্পূর্ণ তালিকা: https://en.wikedia.org/wiki/List_of_tz_database_Time_zones
উদাহরণ প্যাকেজ.জসন:
{
"scripts": {
"start": "TZ='UTC' node index.js"
}
}
আপনার প্রধান ফাইল যেমন ইন্ডেক্স.জেএস বা অ্যাপ.জেস বা মেইন.জেএস বা আপনার ফাইলের নাম যাই হোক না কেন কেবল পরিবেশের পরিবর্তনশীল সেট করুন:
process.env.TZ = "Aisa/Tehran";
এটি টাইমজোনটি সেট করবে যা আপনার সম্পূর্ণ নোড অ্যাপ্লিকেশনটিতে ব্যবহৃত হবে