मैं नोड.जेएस में डिफ़ॉल्ट टाइमज़ोन कैसे सेट करूं?
मैं नोड.जेएस में डिफ़ॉल्ट टाइमज़ोन कैसे सेट करूं?
जवाबों:
इस Google समूह थ्रेड के अनुसार , आप किसी भी दिनांक फ़ंक्शन को कॉल करने से पहले TZ वातावरण चर सेट कर सकते हैं। बस इसका परीक्षण किया और यह काम करता है।
> 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
उस संग्रह में फ़ाइल की जांच करें ।
एक अन्य दृष्टिकोण जो कम से कम लिनक्स के वातावरण में मेरे लिए काम कर रहा था, इस तरह से अपने नोड.जेएस एप्लिकेशन को चलाने के लिए है:
env TZ='Europe/Amsterdam' node server.js
यह कम से कम यह सुनिश्चित करना चाहिए कि टाइमज़ोन शुरुआत से पहले से ही सही ढंग से सेट है।
यहाँ NodeJs में किसी भी बाहरी मॉड्यूल का उपयोग किए बिना कस्टम टाइमज़ोन तिथि समय प्राप्त करने के लिए 100% काम करने का उदाहरण है:
const nDate = new Date().toLocaleString('en-US', {
timeZone: 'Asia/Calcutta'
});
console.log(nDate);
दुर्भाग्य से, सेटिंग process.env.TZ
वास्तव में अच्छी तरह से काम नहीं करती है - मूल रूप से यह अनिश्चित है जब परिवर्तन प्रभावी होगा)।
इसलिए नोड शुरू करने से पहले सिस्टम का टाइमज़ोन सेट करना आपका एकमात्र उचित विकल्प है।
हालाँकि, यदि आप ऐसा नहीं कर सकते हैं, तो नोड-टाइम को वर्कअराउंड के रूप में उपयोग करना संभव होना चाहिए : अपना समय स्थानीय या यूटीसी समय में प्राप्त करें, और उन्हें वांछित टाइमज़ोन में परिवर्तित करें। Nodejs में टाइमजोन ऑफसेट का उपयोग कैसे करें देखें ? ब्योरा हेतु।
env TZ='Europe/Amsterdam' node server.js
@Uhef से समाधान उन मामलों में काम करता है जहां आपका ऐप forked प्रक्रिया के साथ काम नहीं करता है, लेकिन जब आप forked प्रक्रिया के साथ काम कर रहे हैं, विशेष रूप से जब आप अपने ऐप को बिल्डिंग टूल जैसे gulp के साथ लॉन्च करते हैं , तो कमांड gulp
env मान लेगा, लेकिन प्रक्रिया के द्वारा बनाई गई घूंट नहीं (अपने अनुप्रयोग)।
इसे हल करने के लिए, आपको करना होगा:
$ export TZ="Europe/Amsterdam"; gulp myTask
यह TZ
आपके द्वारा काम किए जा रहे कंसोल में शुरू की गई सभी प्रक्रिया के लिए पर्यावरण चर को सेट करेगा , export TZ="Europe/Amsterdam";
फिर से उपसर्ग के साथ उन्हें निष्पादित करने की आवश्यकता के बिना एक ही कंसोल में gulp कमांड के बाद निष्पादित सभी अनुवर्ती प्रक्रिया शामिल है ।
Etc/UTC
इसमें उपलब्ध विशिष्ट ऑफ़सेट भी हैं Etc
, लेकिन ऑफ़सेट इस बात से उलट है कि कोई क्या उम्मीद करेगा। Etc/GMT-1
UTC + 1 घंटा है। देखेंhttps://en.wikipedia.org/wiki/List_of_tz_database_time_zones
सर्वर टाइमज़ोन सेट करें और NTP सिंक का उपयोग करें। सर्वर समय बदलने के लिए यहां एक बेहतर उपाय है।
टाइमज़ोन को सूचीबद्ध करने के लिए
timedatectl list-timezones
टाइमजोन सेट करने के लिए
sudo timedatectl set-timezone America/New_York
समय क्षेत्र सत्यापित करें
timedatectl
मैं अपने सर्वर और डेटाबेस के लिए यूटीसी टाइमज़ोन का उपयोग करना पसंद करता हूं। किसी भी रूपांतरण को क्लाइंट पर नियंत्रित किया जाना चाहिए। हम ग्राहक पक्ष पर क्षणों का उपयोग कर सकते हैं।
साथ ही कई उदाहरणों को बनाए रखना आसान होगा,
मुझे पता है कि यह धागा बहुत पुराना है, लेकिन मुझे लगता है कि इससे किसी को भी मेरी तरह Google से यहां पहुंचने में मदद मिलेगी।
GAE फ्लेक्स (NodeJs) में, आप en.roment वैरिएबल TZ (ऐप में सभी डेट टाइमज़ोन को मैनेज करने वाले) को app.yaml फ़ाइल में सेट कर सकते हैं, मैं आपको एक उदाहरण छोड़ता हूँ:
app.yaml
# [START env]
env_variables:
# Timezone
TZ: America/Argentina/Buenos_Aires
यहां उन लोगों के लिए एक उत्तर है जो अमेज़ॅन AWS इलास्टिक बीनस्टॉक को Node.js एप्लिकेशन को तैनात करते हैं । मैंने इस दस्तावेज को कहीं और नहीं देखा है:
इसके अंतर्गत 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 या अन्य फ्लेवर चलाते समय मैला हो सकता है।
यहां एक फिक्स है जो आपको किसी भी समयक्षेत्र का आसानी से उपयोग करने की अनुमति देगा।
टाइमज़ोन की सूची के लिए यहां देखें
बस अपना समय क्षेत्र वाक्यांश अपनी FORMAT लाइन के कोष्ठक में रखें।
इस मामले में - मैं पूर्व में © को परिवर्तित कर रहा हूं।
//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');
मैं इस npm पैकेज यूनिक्स-सिस्टम-टाइमज़ोन के साथ काम करता हूं
नोड .js v13 के लिए अद्यतन करें
जैसा कि @Tom ने बताया, पूर्ण icu समर्थन अब v13 में बनाया गया है। तो सेटअप चरणों को छोड़ा जा सकता है। आप अभी भी अनुकूलित कर सकते हैं कि आप रनटाइम में icu का निर्माण या उपयोग कैसे करना चाहते हैं: https://nodejs.org/api/intl.html
Windows पर नोड के लिए । आप निम्न कार्य कर सकते हैं:
यदि यह स्थापित किया गया है, तो फुल-आईकयू स्थापित करें, जो तारीख के स्थानों को ठीक से लागू करता है
npm i full-icu
या विश्व स्तर पर: npm i -g full-icu
अपने कोड में toLocaleString () का उपयोग करें, जैसे:
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 की एप्लिकेशन सेटिंग के अलावा, Azure वेब ऐप के रूप में node.js के लिए , आपको उदाहरण के लिए NODE_ICU_DATA भी सेट करना होगा<your project>\node_modules\full-icu
, निश्चित रूप i पूर्ण-आईसीयू करने के बाद। Azure पर वैश्विक रूप से पैकेज स्थापित करने का सुझाव नहीं दिया गया है क्योंकि यह निर्देशिका अस्थायी है और इसे मिटा दिया जा सकता है।
Ref: 1. NodeJS तारीख स्थानों को ठीक से लागू नहीं कर रहा है
आप लाइब्रेरी tzdata के साथ ग्लोबल टाइमज़ोन को कॉन्फ़िगर कर सकते हैं:
npm install tzdata -y
उदाहरण के लिए चर के साथ अपने वातावरण को सेट करने के बाद: TZ = अमेरिका / बोगोटा
और अपनी परियोजना में परीक्षण:
new Date()
मुझे आशा है कि helpyou
आप पर्यावरण चर TZ
को सेट करके Node.js प्रक्रिया टाइमज़ोन लागू कर सकते हैंUTC
तो सभी समय यूटीसी + 00: 00 में मापा जाएगा
पूरी सूची: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
उदाहरण के पैकेज ।json:
{
"scripts": {
"start": "TZ='UTC' node index.js"
}
}
अपनी मुख्य फ़ाइल जैसे index.js या app.js या main.js या जो भी आपकी फ़ाइल का नाम है, में बस पर्यावरण चर सेट करें:
process.env.TZ = "Aisa/Tehran";
यह आपके पूरे नोड एप्लिकेशन में उपयोग किए जाने वाले टाइमज़ोन को सेट करेगा