በጃቫ ስክሪፕት የተፃፈ ማንኛውም አይነት አፕሊኬሽን ከሞላ ጎደል ከሰአት ወይም ከቀናት ጋር ይሰራል። መጀመሪያ ላይ ይህ አብሮ በተሰራው የቀን ኤ ፒ አይ ላይ ብቻ የተወሰነ ነበር። ይህ ኤፒአይ መሰረታዊ ተግባራትን ያካትታል፣ ግን ማድረግ በሚችለው ነገር በጣም የተገደበ ነው። እንደ Moment.js ያሉ የሶስተኛ ወገን ቤተ-መጽሐፍት እና በኋላ አብሮ የተሰሩ እንደ Intl APIs እና አዲሱ ጊዜያዊ ኤፒአይ ከሰዓታት እና ከቀናት ጋር ለመስራት የበለጠ ተለዋዋጭነትን ይጨምራሉ። የአፍታ መነሳት እና ውድቀት.js Moment.js ከሰዓቶች እና ቀኖች ጋር ለመስራት ኃይለኛ መገልገያዎች ያለው የጃቫ ስክሪፕት ቤተ-መጽሐፍት ነው። እንደ የሰዓት ሰቅ አስተዳደር ያሉ ከመሰረታዊ የቀን ኤፒአይ የጎደሉ ባህሪያትን ያካትታል እና ብዙ የተለመዱ ስራዎችን ቀላል ያደርገዋል። አፍታ ቀኖችን እና ሰዓቶችን የመቅረጽ ተግባራትንም ያካትታል። በተለያዩ አፕሊኬሽኖች ውስጥ በስፋት ጥቅም ላይ የዋለ ቤተ-መጽሐፍት ሆነ። ሆኖም፣ ሞመንትም የችግሮቹ ድርሻ ነበረው። ትልቅ ቤተ-መጽሐፍት ነው፣ እና ለመተግበሪያው የጥቅል መጠን በከፍተኛ ሁኔታ ሊጨምር ይችላል። ቤተ መፃህፍቱ የዛፍ መንቀጥቀጥን ስለማይደግፍ (ጥቅም ላይ ያልዋሉ የቤተ-መጻህፍት ክፍሎችን የሚያስወግድ የዘመናዊ ጥቅሎች ባህሪ) አንድ ወይም ሁለቱን ተግባራቶቹን ብቻ ቢጠቀሙም አጠቃላይ የአፍታ ቤተ-መጽሐፍት ተካትቷል። ሌላው የአፍታ ጉዳይ የሚፈጥራቸው ነገሮች ተለዋዋጭ መሆናቸው ነው። የተወሰኑ ተግባራትን በአንድ አፍታ ነገር ላይ መጥራት የጎንዮሽ ጉዳቶች አሉት እና የነገሩን ዋጋ ይለውጠዋል። ይህ ወደ ያልተጠበቁ ባህሪያት ወይም ስህተቶች ሊያመራ ይችላል. እ.ኤ.አ. በ2020፣ የአፍታ ጠባቂዎች ቤተ መፃህፍቱን ወደ ጥገና ሁነታ ለማስቀመጥ ወሰኑ። ምንም አዲስ የባህሪ ልማት እየተሰራ አይደለም፣ እና ጠባቂዎቹ ለአዳዲስ ፕሮጀክቶች እንዳይጠቀሙበት ይመክራሉ። ሌሎች የጃቫ ስክሪፕት የቀን ቤተ-መጻሕፍት አሉ፣ ለምሳሌ ዴት-ኤፍን፣ ነገር ግን በከተማ ውስጥ አዲስ ተጫዋች አለ፣ ኤፒአይ በቀጥታ በጃቫስክሪፕት፡ ጊዜያዊ። የመጀመሪያው ቀን ኤፒአይ ቀዳዳዎችን የሚሞላ እና በአፍታ እና በሌሎች ቤተ-መጻህፍት ውስጥ ያሉትን አንዳንድ ገደቦች የሚፈታ አዲስ መስፈርት ነው። ጊዜያዊ ምንድን ነው? ጊዜያዊ አዲስ የጊዜ እና የቀን ኤፒአይ ወደ ECMAScript መስፈርት የሚታከል ሲሆን ይህም ዘመናዊ ጃቫ ስክሪፕትን ይገልፃል። ከማርች 20266 ጀምሮ የTC39 ሂደት ደረጃ 4 ላይ ደርሷል (የጃቫስክሪፕት ቋንቋ ሀሳቦችን እና ተጨማሪዎችን የሚቆጣጠረው ኮሚቴ) እና በሚቀጥለው የECMAScript ዝርዝር ውስጥ ይካተታል። ቀድሞውንም በብዙ አሳሾች ላይ ተተግብሯል፡ Chrome 144+ እና Firefox 139+፣ ሳፋሪ በቅርቡ እንደሚከተል ይጠበቃል። ፖሊ ሙሌት ላልተደገፉ አሳሾች እና Node.jsም አለ። ጊዜያዊ ኤፒአይ በጥቅሉ በጊዜ ውስጥ አፍታዎችን የሚወክሉ ነገሮችን ይፈጥራል። እነዚህ በተወሰነ የሰዓት ሰቅ ውስጥ የሙሉ ጊዜ እና የቀን ማህተሞች ሊሆኑ ይችላሉ ወይም ያለ ምንም የሰዓት ሰቅ እና የቀን መረጃ የ"ግድግዳ ሰዓት" ጊዜ አጠቃላይ ምሳሌ ሊሆኑ ይችላሉ። አንዳንድ የ Temporal ዋና ዋና ባህሪያት የሚከተሉትን ያካትታሉ:

ቀኖች ያላቸው ወይም የሌላቸው ጊዜያት። ጊዜያዊ ነገር በተወሰነ ቀን ላይ የተወሰነ ጊዜን ወይም ጊዜን ያለ ምንም የቀን መረጃ ሊወክል ይችላል። የተወሰነ ቀን፣ ያለ ጊዜ፣ እንዲሁ ሊወከል ይችላል። የሰዓት ሰቅ ድጋፍ።ጊዜያዊ ነገሮች ሙሉ በሙሉ የሰዓት ሰቅ ያውቃሉ እና በተለያዩ የሰዓት ዞኖች ሊለወጡ ይችላሉ። አፍታ የሰዓት ሰቆችንም ይደግፋል፣ ነገር ግን ተጨማሪ የአፍታ ሰቅ ቤተ-መጽሐፍትን ይፈልጋል። የማይለወጥ.አንድ ጊዜ ጊዜያዊ ነገር ከተፈጠረ በኋላ መለወጥ አይቻልም. የሰዓት ሒሳብ ወይም የሰዓት ሰቅ ልወጣዎች ዋናውን ነገር አይለውጡም። በምትኩ፣ አዲስ ጊዜያዊ ነገር ያመነጫሉ። 1-based indexing።ከቀን ኤፒአይ (እንዲሁም ከአፍታ ጋር) ያለው የተለመደ የሳንካ ምንጭ ወራቶች ዜሮ-ኢንዴክስ መሆናቸው ነው። ይህ ማለት በእውነተኛ ህይወት ሁላችንም እንደምንረዳው ከወር 1 ይልቅ ጥር ወር 0 ነው። ጊዜያዊ ይህንን በ1 ላይ የተመሰረተ መረጃ ጠቋሚን በመጠቀም ያስተካክላል - ጥር ወር 1 ነው። በአሳሹ ውስጥ ነው የተሰራው። Temporal በራሱ አሳሹ ውስጥ ኤፒአይ ስለሆነ፣ በመተግበሪያዎ የጥቅል መጠን ላይ ምንም አይጨምርም።

የቀን ኤፒአይ አይጠፋም የሚለውን ልብ ማለት ያስፈልጋል። ጊዜያዊ ይህን ኤፒአይ ሲተካ፣ እየተወገዘ ወይም እየተቋረጠ አይደለም። አሳሾች በድንገት የቀን ኤፒአይን ካስወገዱ ብዙ መተግበሪያዎች ይበላሻሉ። ሆኖም፣ እንዲሁም Moment አሁን በጥገና ሁነታ እንደ ውርስ ፕሮጀክት ተደርጎ መወሰዱን ያስታውሱ። በቀሪው መጣጥፍ ውስጥ፣ በአፍታ ላይ የተመሰረተ ኮድ ወደ አዲሱ ጊዜያዊ ኤፒአይ ለማዛወር አንዳንድ "የምግብ አዘገጃጀቶችን" እንመለከታለን። እንደገና መፈጠር እንጀምር! ቀን እና ሰዓት ነገሮችን መፍጠር ቀኖችን እና ሰዓቶችን ከመጠቀምዎ በፊት እነሱን የሚወክሉ ዕቃዎችን መፍጠር አለብን። የአሁኑን ቀን እና ሰዓት የሚወክል የአፍታ ነገር ለመፍጠር የአፍታ ተግባርን ይጠቀሙ። const now = አፍታ (); console.log (አሁን); // አፍታ<2026-02-18T21:26:29-05:00>

ይህ ነገር አሁን እንደ አስፈላጊነቱ ሊቀረጽ ወይም ሊስተካከል ይችላል።

// ወደ UTC ቀይር //ማስጠንቀቂያ፡ ይህ የአፍታ ነገርን ይለውጠዋል እና በ UTC ሁነታ ላይ ያስቀምጠዋል! console.log (now.utc ()); // አፍታ<2026-02-19T02:26:29Z>

// የተቀረጸ ሕብረቁምፊ ያትሙ - አሁን UTC ጊዜ እየተጠቀመ መሆኑን ልብ ይበሉ console.log(አሁን.ቅርጸት('ወወ/ቀን/ዓዓዓህ hh:mm:ss a')); // 02/19/2026 02:27:07 ጥዋት

ስለ አፍታ ማስታወስ ያለብን ዋናው ነገር የአፍታ ነገር ሁልጊዜ ስለ ሰዓቱ እና ስለ ቀኑ መረጃን ያካትታል። በጊዜ መረጃ ብቻ ለመስራት የሚያስፈልግዎ ከሆነ, ይህ ብዙውን ጊዜ ጥሩ ነው, ነገር ግን እንደ የቀን ብርሃን ቁጠባ ጊዜ ወይም የመዝለል ዓመታት ባሉ ሁኔታዎች ውስጥ ያልተጠበቀ ባህሪን ሊያስከትል ይችላል, ቀኑ በጊዜ ስሌት ላይ ተጽእኖ ሊያሳድር ይችላል. ጊዜያዊ የበለጠ ተለዋዋጭ ነው. ጊዜያዊ.ፈጣን ነገር በመፍጠር የአሁኑን ቀን እና ሰዓት የሚወክል ነገር መፍጠር ይችላሉ። ይህ ከ"ዘመን" (እኩለ ሌሊት ዩቲሲ በጥር 1, 1970) ጀምሮ በጊዜ የተገለጸውን ነጥብ ያመለክታል። ጊዜያዊ ይህን ቅጽበታዊ ጊዜ በ nanosecond-ደረጃ ትክክለኛነት ሊያመለክት ይችላል። const now = Temporal.Now.intant ();

// ከዘመናት ጀምሮ ጥሬ ናኖሴኮንዶችን ተመልከት console.log (አሁን.epochNanoseconds); // 1771466342612000000n

// ለ UTC ቅርጸት console.log (አሁን.toString ()); // 2026-02-19T01:55:27.844ዘ

// ለአንድ የተወሰነ የጊዜ ሰቅ ቅርጸት console.log (now.toString ({ timeZone: 'America/New_York'})); // 2026-02-18T20:56:57.905-05:00

ጊዜያዊ።ፈጣን ነገሮች እንዲሁ ከስታቲክ ዘዴ በመጠቀም ለተወሰነ ጊዜ እና ቀን ሊፈጠሩ ይችላሉ።

const myInstant = Temporal.Instant.from ('2026-02-18T21:10:00-05:00');

// ቅጽበቱን በአከባቢው የሰዓት ሰቅ ውስጥ ይቅረጹ። ይህ ብቻ እንደሚቆጣጠር ልብ ይበሉ // ቅርጸቱ - ነገሩን ልክ moment.utc እንደሚለውጥ አይለውጠውም። console.log (myInstant.toString ({ timeZone: 'America/New_York'})); // 2026-02-18T21:10:00-05:00

እንዲሁም የሚከተሉትን ጨምሮ ሌሎች አይነት ጊዜያዊ ነገሮችን መፍጠር ይችላሉ፡-

Temporal.PlainDate፡ የጊዜ መረጃ የሌለበት ቀን። Temporal.PlainTime፡ የቀን መረጃ የሌለው ጊዜ። ጊዜያዊ.የዞን ቀን ጊዜ፡ ቀን እና ሰዓት በአንድ የተወሰነ የሰዓት ሰቅ ውስጥ።

እነዚህ እያንዳንዳቸው ቀኑን እና/ወይም ሰዓቱን በሚገልጽ ነገር ሊጠራ የሚችል ወይም የሚተነተን የቀን ሕብረቁምፊ ያለው ዘዴ አላቸው። // ቀን ብቻ const today = Temporal.PlainDate.ከ({ ዓመት: 2026, ወር፡ 2፣ // ማስታወሻ ለየካቲት 2 እየተጠቀምን ነው። ቀን: 18 }); console.log (ዛሬ.toString ()); // 2026-02-18

// አንድ ጊዜ ብቻ const lunchTime = Temporal.PlainTime.ከ({ ሰዓት: 12 }); console.log (ምሳ ሰዓት.toString ()); // 12:00:00

// ቀን እና ሰዓት በአሜሪካ ምስራቃዊ የሰዓት ሰቅ ውስጥ const dueAt = Temporal.ZonedDateTime.ከ({ የሰዓት ሰቅ፡ 'አሜሪካ/ኒው ዮርክ'፣ ዓመት: 2026, ወር: 3, ቀን: 1, ሰዓት: 12, ደቂቃ: 0, ሁለተኛ: 0 }); console.log (dueAt.toString ()); // 2026-03-01T12:00:00-05:00[አሜሪካ/ኒው ዮርክ]

መተንተን የቀን እና የሰዓት መረጃን በፕሮግራማዊ አፈጣጠር ሸፍነናል። አሁን መተንተንን እንመልከት. መተንተን አፍታ አብሮ ከተሰራው ጊዜያዊ ኤፒአይ የበለጠ ተለዋዋጭ የሆነበት አንዱ አካባቢ ነው። የቀን ሕብረቁምፊውን ወደ ቅጽበት ተግባር በማለፍ መተንተን ይችላሉ። በነጠላ ነጋሪ እሴት፣Moment የ ISO የቀን ህብረቁምፊን ይጠብቃል፣ነገር ግን ጥቅም ላይ የሚውልበትን የቀን ቅርጸት የሚገልጽ ሁለተኛ ሙግት ካቀረቡ ተለዋጭ ቅርጸቶችን መጠቀም ይችላሉ።

const isoDate = አፍታ ('2026-02-21T09: 00: 00'); const formatted ቀን = አፍታ ('2/21/26 9:00:00', 'M/D/YY ሰ:mm:ss');

console.log (isoDate); // አፍታ<2026-02-21T09:00:00-05:00>

console.log (የተቀረጸው ቀን); // አፍታ<2026-02-21T09:00:00-05:00>

በአሮጌ ስሪቶች ውስጥ፣ Moment ማንኛውንም በዘፈቀደ ቅርጸት የተሰራ የቀን ህብረቁምፊን ለመተንበይ ምርጡን ግምት ያደርጋል። ይህ ወደማይታወቅ ውጤት ሊያመራ ይችላል. ለምሳሌ፣ 02-03-2026 ፌብሩዋሪ 2 ነው ወይስ ማርች 3? በዚህ ምክንያት፣ አዲሶቹ የአፍታ ስሪቶች ያለ ISO ቅርጸት የቀን ህብረቁምፊ ከተጠራ (የሚፈለገው ቅርጸት ያለው ሁለተኛው ነጋሪ እሴት ካልተሰጠ) ጉልህ የሆነ የመቀነስ ማስጠንቀቂያ ያሳያሉ። ጊዜያዊ በተለየ የተቀረጸ የቀን ሕብረቁምፊ ብቻ ነው የሚተነተን። ሕብረቁምፊው ከ ISO 8601 ቅርጸት ወይም ቅጥያው RFC 9557 ጋር የሚስማማ መሆን አለበት።

// RFC 9557 የቀን ሕብረቁምፊ በመጠቀም const myDate = Temporal.Instant.from ('2026-02-21T09:00:00-05:00 [አሜሪካ/ኒው_ዮርክ]'); console.log (myDate.toString ({ timeZone: 'America/New_York' })); // 2026-02-21T09:00:00-05:00

// ያልታወቀ የቀን ሕብረቁምፊ በመጠቀም const otherDate = Temporal.Instant.from('2/21/26 9:00:00'); // RangeError፡ ጊዜያዊ ስህተት፡ ልክ ያልሆነ ቁምፊ የዓመት እሴትን ሲተነተን።

የቀኑ ሕብረቁምፊ ትክክለኛ መስፈርቶች በየትኛው ጊዜያዊ ነገር እየፈጠሩ እንደሆነ ይወሰናሉ። ከላይ ባለው ምሳሌ, Temporal.Instant ሙሉ ISO ያስፈልገዋል8601 ወይም RFC 9557 የቀን እና ሰዓቱን በሰዓት ሰቅ ማካካሻ የሚገልጽ የቀን ሕብረቁምፊ፣ ነገር ግን የቀን ቅርፀቱን ንዑስ ክፍል በመጠቀም የPlainDate ወይም PlainTime ነገሮችን መፍጠር ይችላሉ። const myDate = Temporal.PlainDate.from ('2026-02-21'); console.log (myDate.toString ()); // 2026-02-21

const myTime = Temporal.PlainTime.from ('09:00:00'); console.log (myTime.toString ()); // 09:00:00

እነዚህ ሕብረቁምፊዎች አሁንም የሚጠበቀውን ቅርጸት ማክበር እንዳለባቸው ልብ ይበሉ፣ አለበለዚያ ስህተት ይጣላል።

// የማያከብሩ የጊዜ ገመዶችን በመጠቀም። እነዚህ ሁሉ RangeErrorን ይጥላሉ። ጊዜያዊ.PlainTime.ከ('9:00')፤ ጊዜያዊ.PlainTime.ከ('9:00:00 AM');

ጠቃሚ ምክር፡ የISO ያልሆኑ ሕብረቁምፊዎችን ማስተናገድ ጊዜያዊ አስተማማኝነትን ስለሚያስቀድም እንደ 02-01-2026 ያለ የሕብረቁምፊውን ቅርጸት ለመገመት አይሞክርም። የውሂብ ምንጭዎ እንደዚህ ያሉትን ሕብረቁምፊዎች የሚጠቀም ከሆነ፣ በጊዜያዊነት ለመጠቀም ከመሞከርዎ በፊት እሴቶቹን ወደ ISO string 2026-02-01 ለማስተካከል የተወሰነ የሕብረቁምፊ ማጭበርበር ማድረግ ያስፈልግዎታል።

በመቅረጽ ላይ አንዴ አፍታ ወይም ጊዜያዊ ነገር ካለህ፣ ምናልባት በሆነ ጊዜ ወደ ቅርጸት ህብረ ቁምፊ መቀየር ትፈልግ ይሆናል። ይህ አፍታ ትንሽ የበለጠ የተበላሸበት ምሳሌ ነው። የተፈለገውን የቀን ቅርፀት የሚገልፅ የነገሩን ቅርጸት ዘዴ ከቶከኖች ሕብረቁምፊ ጋር ትለዋለህ። const date = አፍታ ();

console.log (ቀን.ቅርጸት ('ወወ/ቀን/ዓዓዓዓ')); // 02/22/2026

console.log (ቀን.ቅርጸት ('MMM Do YYYY፣ h:mm:ss a')); // ፌብሩዋሪ 22፣ 2026፣ 8፡18፡30 ከሰዓት

በሌላ በኩል፣ Temporal ትንሽ ተጨማሪ የቃላት እንድትሆኑ ይፈልጋል። እንደ ኢንስታንት ያሉ ጊዜያዊ ነገሮች እንደ የነገሮች ባህሪ የተገለጹ የተለያዩ የቅርጸት አማራጮችን የሚቀበል የቶሎካሌ ሴትሪንግ ዘዴ አላቸው።

const date = Temporal.Now.instanta ();

// ያለ ክርክር, ለአሁኑ አከባቢ ነባሪውን ቅርጸት እናገኛለን console.log (ቀን.toLocaleString ()); // 2/22/2026፣ 8:23:36 ከሰአት (የኤን-ዩኤስ አካባቢ እንደሆነ በማሰብ)

// ብጁ የቅርጸት ሕብረቁምፊ ለመፍጠር የቅርጸት አማራጮችን ማለፍ console.log(date.toLocaleString('en-US'፣{ ወር: "ረጅም" ቀን: "ቁጥር", ዓመት: 'ቁጥር', ሰዓት: '2-አሃዝ', ደቂቃ፡- '2-አሃዝ' })); // ፌብሩዋሪ 22፣ 2026 ከቀኑ 8፡23 ሰዓት

// የሚፈልጓቸውን መስኮች በቅርጸት ሕብረቁምፊ ውስጥ ብቻ ይለፉ console.log(date.toLocaleString('en-US'፣{ ወር: 'አጭር', ቀን: "ቁጥር" })); // የካቲት 22

ጊዜያዊ የቀን ቅርጸት በትክክል የ Intl.DateTimeFormat ኤፒአይን ይጠቀማል (በዘመናዊ አሳሾች ውስጥ ቀድሞውኑ ይገኛል)። ይህ ማለት ከብጁ የቅርጸት አማራጮችዎ ጋር እንደገና ጥቅም ላይ ሊውል የሚችል የDateTimeFormat ነገር መፍጠር እና ጊዜያዊ ነገሮችን ወደ ቅርጸት ስልቱ ማለፍ ይችላሉ። በዚህ ምክንያት እንደ ቅጽበት ብጁ የቀን ቅርጸቶችን አይደግፍም። እንደ 'Q1 2026' ወይም ሌላ ልዩ ቅርጸት ከፈለጉ፣ አንዳንድ ብጁ የቀን ቅርጸት ኮድ ሊያስፈልግዎ ይችላል ወይም የሶስተኛ ወገን ቤተ-መጽሐፍትን ማግኘት ይችላሉ። const formatter = አዲስ Intl.DateTimeFormat('en-US'፣ { ወር፡ '2-አሃዝ'፣ ቀን: '2-አሃዝ', ዓመት: "ቁጥር" });

const date = ጊዜያዊ.Now.instant (); console.log (formatter.format (ቀን)); // 02/22/2026

የአፍታ ቅርጸት ቶከኖች ለመጻፍ ቀላል ናቸው፣ ግን ለአካባቢ ተስማሚ አይደሉም። የቅርጸቱ ሕብረቁምፊዎች እንደ ወር/ቀን ቅደም ተከተል ያሉ ነገሮችን "ሃርድ ኮድ" ያዘጋጃል። የማዋቀሪያ ነገርን የመጠቀም ጥቅሙ ልክ እንደ Temporal, ከየትኛውም አከባቢ ጋር በራስ-ሰር መላመድ እና ትክክለኛውን ቅርጸት መጠቀም ነው. const date = Temporal.Now.instanta ();

const formatOptions = { ወር: 'ቁጥር', ቀን: "ቁጥር", ዓመት: "ቁጥር" };

console.log(date.toLocaleString('en-US'፣ formatOptions)); // 2/22/2026

console.log(date.toLocaleString('en-GB'፣ formatOptions)); // 22/02/2026

የቀን ስሌት በብዙ አፕሊኬሽኖች ውስጥ, በቀን ውስጥ አንዳንድ ስሌቶችን ማጠናቀቅ ያስፈልግዎታል. የጊዜ አሃዶችን (ቀናት፣ ሰአታት፣ ሰከንድ፣ ወዘተ) ማከል ወይም መቀነስ ሊፈልጉ ይችላሉ። ለምሳሌ፣ የአሁኑ ቀን ካለህ፣ ለተጠቃሚው ቀኑን ከ 1 ሳምንት በኋላ ማሳየት ትፈልግ ይሆናል። የአፍታ ነገሮች እነዚህን ስራዎች የሚያከናውኑ እንደ መደመር እና መቀነስ የመሳሰሉ ዘዴዎች አሏቸው። እነዚህ ተግባራት እሴት እና አሃድ ይወስዳሉ፣ ለምሳሌ፡ add(7፣ 'ቀናቶች')። በአፍታ እና በጊዜአዊ መካከል አንድ በጣም አስፈላጊ የሆነ ልዩነት ግን እነዚህን የቀን ስሌቶች በሚሰሩበት ጊዜ ዋናው ነገር ተስተካክሏል እና ዋናው እሴቱ ይጠፋል. const now = አፍታ ();

console.log (አሁን); // አፍታ<2026-02-24T20:08:36-05:00>

const በሚቀጥለው ሳምንት = now. add (7, 'ቀናት'); console.log (በሚቀጥለው ሳምንት); // አፍታ<2026-03-03T20:08:36-05:00>

// ጎትቻ - ዋናው ነገር ተቀይሯል console.log (አሁን); // አፍታ<2026-03-03T20:08:36-05:00>

ዋናውን ቀን ላለማጣት፣ ቅጂ ለመፍጠር ክሎን በMoment ነገር ላይ መደወል ይችላሉ። አሁን const= አፍታ (); const በሚቀጥለው ሳምንት = now.clone () ያክሉ (7, 'ቀናት');

console.log (አሁን); // አፍታ<2026-02-24T20:12:55-05:00>

console.log (በሚቀጥለው ሳምንት); // አፍታ<2026-03-03T20:12:55-05:00>

በሌላ በኩል፣ ጊዜያዊ ነገሮች የማይለወጡ ናቸው። አንዴ እንደ ቅጽበታዊ፣ PlainDate እና የመሳሰሉትን ነገሮች ከፈጠሩ የነገሩ ዋጋ በጭራሽ አይቀየርም። ጊዜያዊ ነገሮች የመደመር እና የመቀነስ ዘዴዎች አሏቸው። ጊዜያዊ የትኛዎቹ የጊዜ ክፍሎች ወደየትኞቹ የነገር ዓይነቶች ሊጨመሩ እንደሚችሉ ትንሽ ምርጫ ነው። ለምሳሌ፣ ቀናትን በቅጽበት ማከል አይችሉም፡-

const now = Temporal.Now.intant (); const nextWeek = now.add({ቀናት፡ 7 }); // RangeError፡ ጊዜያዊ ስህተት፡ ትልቁ ክፍል የቀን አሃድ ሊሆን አይችልም።

ይህ የሆነበት ምክንያት ቅጽበታዊ ነገሮች በUTC ውስጥ የተወሰነ ጊዜን ስለሚወክሉ እና የቀን መቁጠሪያ-አግኖስቲክ ስለሆኑ ነው። እንደ የቀን ብርሃን ቁጠባ ጊዜ ባሉ የሰዓት ሰቅ ህጎች መሰረት የቀን ርዝመት ሊለወጥ ስለሚችል ይህ ስሌት በቅጽበት አይገኝም። ሆኖም ይህን ክዋኔ በሌሎች የነገሮች አይነት ለምሳሌ እንደ PlainDateTime ላይ ማከናወን ትችላለህ፡- const now = Temporal.Now.plainDateTimeISO(); console.log (አሁን.toLocaleString ()); // 2/24/2026፣ 8:23:59 ከሰዓት

const nextWeek = now.add({ቀናት፡ 7 });

// ዋናው የPlainDateTime ሳይለወጥ መቆየቱን ልብ ይበሉ console.log (አሁን.toLocaleString ()); // 2/24/2026፣ 8:23:59 ከሰዓት

console.log (የሚቀጥለው ሳምንት.toLocaleString ()); // 3/3/2026፣ 8:23:59 ከሰዓት

እንዲሁም በሁለት አፍታ ወይም ጊዜያዊ ነገሮች መካከል ምን ያህል ጊዜ እንዳለ ማስላት ይችላሉ። በMoment's diff ተግባር ፣ ለጥራጥሬነት አንድ ክፍል ማቅረብ አለብዎት ፣ አለበለዚያ ልዩነቱን በሚሊሰከንዶች ይመልሳል። const date1 = አፍታ ('2026-02-21T09: 00: 00'); const date2 = አፍታ ('2026-02-22T10: 30: 00');

console.log (ቀን2.diff (ቀን1)); // 91800000

console.log (ቀን2.ዲፍ (ቀን1, 'ቀናት')); //1

ይህንን በጊዜያዊ ነገር ለማድረግ፣ ሌላ ጊዜያዊ ነገርን እስከ ዘዴው ድረስ ማስተላለፍ ይችላሉ። ይህ የጊዜ ልዩነት መረጃን የያዘ ጊዜያዊ የቆይታ ነገርን ይመልሳል። የቆይታ ነገሩ ለእያንዳንዱ የልዩነቱ አካል ባህሪያት አለው፣ እና እንዲሁም የጊዜ ልዩነትን የሚወክል ISO 8601 የቆይታ ሕብረቁምፊ ማመንጨት ይችላል።

const date1 = Temporal.PlainDateTime.ከ('2026-02-21T09:00:00')፤ const date2 = Temporal.PlainDateTime.ከ('2026-02-22T10:30:00');

// ትልቁ ክፍል ለመወከል ትልቁን የጊዜ አሃድ ይገልጻል // በቆይታ ጊዜ ስሌት ውስጥ const diff = date2. ጀምሮ (ቀን1, {ትልቁ ዩኒት: 'ቀን'});

console.log (diff.days); //1

console.log (diff.hours); //1

console.log (diff.minutes); // 30

console.log (diff.toString ()); // P1DT1H30M // (ISO 8601 ቆይታ ሕብረቁምፊ: 1 ቀን, 1 ሰዓት, 30 ደቂቃዎች)

ቀኖችን እና ጊዜዎችን ማወዳደር አፍታ እና ጊዜያዊ ሁለቱም ቀኖችን እና ሰዓቶችን እንዲያወዳድሩ ያስችሉዎታል የትኛው ከሌላው እንደሚቀድም ለመወሰን፣ ነገር ግን በኤፒአይ የተለያዩ አቀራረቦችን ይውሰዱ። አፍታ ሁለት ቅጽበታዊ ነገሮችን ለማነፃፀር እንደ isBefore፣ isAfter እና isSame ያሉ ዘዴዎችን ይሰጣል። const date1 = አፍታ ('2026-02-21T09: 00: 00'); const date2 = አፍታ ('2026-02-22T10: 30: 00');

console.log (ቀን1.isBefore (ቀን2)); // እውነት

ጊዜያዊ የስታቲስቲክ ማነጻጸሪያ ዘዴን ይጠቀማል በአንድ ዓይነት ሁለት ነገሮች መካከል ያለውን ንጽጽር ለማከናወን። ይመለሳል -1 የመጀመሪያው ቀን ከሁለተኛው በፊት ከሆነ, 0 እኩል ከሆኑ, ወይም 1 የመጀመሪያው ቀን ከሁለተኛው በኋላ ከሆነ. የሚከተለው ምሳሌ ሁለት PlainDate ነገሮችን እንዴት ማወዳደር እንደሚቻል ያሳያል። ለ Temporal.PlainDate.compare ሁለቱም ነጋሪ እሴቶች የPlainDate ነገሮች መሆን አለባቸው።

const date1 = Temporal.PlainDate.from({ዓመት፡ 2026፣ ወር፡ 2፣ ቀን፡ 24}); const date2 = Temporal.PlainDate.from({ዓመት፡ 2026፣ ወር፡ 3፣ ቀን፡ 24});

// date1 ከቀን2 በፊት ይመጣል ፣ ስለዚህ -1 console.log (Temporal.PlainDate.compare (ቀን1, date2));

// የተለያየ አይነት ሁለት ነገሮችን ለማነጻጸር ከሞከርን ስህተት console.log (Temporal.PlainDate.compare (ቀን1, Temporal.Now.instant ())); // የመተየብ ስህተት፡ ጊዜያዊ ስህተት፡ ልክ ያልሆኑ የPlainDate መስኮች ቀርበዋል።

በተለይም ይህ የጊዜአዊ ነገሮችን በጊዜ ቅደም ተከተል መደርደር ቀላል ያደርገዋል። // የTimeporal.PlainDate ነገሮች ድርድር const ቀኖች = [...];

// Temporal.PlainDate.compareን እንደ ማነፃፀሪያ ተግባር ይጠቀሙ dates.sort (Temporal.PlainDate.compare);

የሰዓት ሰቅ ልወጣዎች የዋና አፍታ ቤተ-መጽሐፍት የሰዓት ሰቅ ልወጣዎችን አይደግፍም። ይህን ተግባር ከፈለጉ፣ የአፍታ-ሰዓት ሰቅ ጥቅል መጫንም ያስፈልግዎታል። ይህ ፓኬጅ በዛፍ የማይነቃነቅ አይደለም፣ እና ስለዚህ ወደ ጥቅል መጠንዎ ላይ ጉልህ በሆነ ሁኔታ ሊጨምር ይችላል። አንዴ የአፍታ-ሰዓት ሰቅን ከጫኑ የአፍታ ነገሮችን በ tz ዘዴ ወደ ተለያዩ የሰዓት ሰቆች መለወጥ ይችላሉ። ልክ እንደሌሎች የአፍታ ክንዋኔዎች፣ ይህ ከስር ያለውን ይለውጣልነገር. // የአሜሪካን ምስራቃዊ ሰዓትን ግምት ውስጥ በማስገባት const now = አፍታ (); console.log (አሁን); // አፍታ<2026-02-28T20:08:20-05:00>

// ወደ ፓሲፊክ ሰዓት ቀይር። // የመጀመሪያው የምስራቅ ጊዜ ጠፍቷል. now.tz ('አሜሪካ/ሎስ_አንጀለስ'); console.log (አሁን); // አፍታ<2026-02-28T17:08:20-08:00>

የሰዓት ሰቅ ተግባር በጊዜያዊ ኤፒአይ የተገነባው Temporal.ZonedDateTime ነገር ሲጠቀሙ ነው። እነዚህ ነገሮች በጊዜ ዞን ተመሳሳዩን ቅጽበት የሚወክል አዲስ ZonedDateTime የሚመልስ የTimeZone ዘዴን ያካትታሉ ነገር ግን በተጠቀሰው የሰዓት ሰቅ ውስጥ። // እንደገና፣ የአሜሪካን ምስራቃዊ ሰዓት ግምት ውስጥ በማስገባት const now = Temporal.Now.zonedDateTimeISO(); console.log (አሁን.toLocaleString ()); // 2/28/2026፣ 8:12:02 PM EST

// ወደ ፓሲፊክ ሰዓት ቀይር const nowPacific = now.በTimeZone ('አሜሪካ/ሎስ_አንጀለስ')፤ console.log (አሁንPacific.toLocaleString ()); // 2/28/2026፣ 5:12:02 ከሰዓት PST

// ዋናው ነገር ሳይለወጥ ይቀራል console.log (አሁን.toLocaleString ()); // 2/28/2026፣ 8:12:02 PM EST

ማስታወሻ፡ በLocaleString የተመለሱት የተቀረጹት እሴቶች፣ ስሙ እንደሚያመለክተው የአካባቢ ጥገኛ ናቸው። የናሙና ኮድ የተዘጋጀው በኤን-ዩኤስ አካባቢ ነው፣ ስለዚህ ቅርጸቱ እንደዚህ ነው፡ 2/28/2026፣ 5:12:02 PM PST. በሌላ አካባቢ, ይህ የተለየ ሊሆን ይችላል. ለምሳሌ፣ በኤን-ጂቢ አካባቢ፣ እንደ 28/2/2026፣ 17፡12፡02 ጂኤምቲ-8 ያለ ነገር ያገኛሉ። የገሃዱ ዓለም ተሃድሶ በጊዜ ዞኖች ውስጥ ሁነቶችን ለማቀድ መተግበሪያ እየገነባን ነው እንበል። የዚህ መተግበሪያ አካል ጌትEventTimes ተግባር ሲሆን የክስተቱን ሰዓት እና ቀን፣ የአካባቢ የሰዓት ሰቅ እና የዒላማ ሰቅን የሚወክል ISO 8601 ሕብረቁምፊ ይወስዳል። ተግባሩ በሁለቱም የሰዓት ዞኖች ውስጥ ለክስተቱ ቅርጸት የተሰሩ የሰዓት እና የቀን ሕብረቁምፊዎችን ይፈጥራል። ተግባሩ ልክ የሆነ የሰዓት/ቀን ሕብረቁምፊ ያልሆነ የግቤት ሕብረቁምፊ ከተሰጠ፣ስህተትን ይጥላል። አፍታ በመጠቀም (የጊዜ ሰቅ ጥቅል መጠቀምን የሚጠይቅ) የመጀመሪያው ትግበራ ይኸውና።

አፍታ ከ'አፍታ-ሰዓት ሰቅ' ማስመጣት;

ተግባር getEventTimes(inputString፣ userTimeZone፣ targetTimeZone) { const timeFormat = 'MMM D፣ YYYY፣ h:mm:ss a z';

// 1. በተጠቃሚው የሰዓት ሰቅ ውስጥ የመጀመሪያውን አፍታ ይፍጠሩ const eventTime = moment.tz( የግቤት ሕብረቁምፊ፣ moment.ISO_8601, // ISO 8601 string ጠብቅ እውነት፣ // ጥብቅ ትንተና userTimeZone );

// የግቤት ገመዱ ትክክለኛ ቀንን የማይወክል ከሆነ ስህተት ይጣሉ ከሆነ (!eventTime.isValid()) { አዲስ ስህተት መጣል ("ልክ ያልሆነ ቀን/ሰዓት ግቤት"); }

// 2. የታለመውን ጊዜ አስሉ // ወሳኝ፡ ማጠቃለያ አለብን፣ ወይም 'eventTime' ለዘላለም ይለወጣል! const targetTime = eventTime.clone () .tz (targetTimeZone);

ተመለስ { local: eventTime.format(timeFormat)፣ ኢላማ፡ targetTime.format(timeFormat)፣ }; }

const መርሐግብር = getEventTimes ( '2026-03-05T15:00-05:00'፣ 'አሜሪካ/ኒው ዮርክ'፣ 'አውሮፓ/ለንደን' );

console.log (መርሃግብር.local); // ማርች 5፣ 2026፣ 3:00:00 ከሰዓት EST

console.log (መርሃግብር. targetላማ); // ማርች 5፣ 2026፣ 8፡00፡00 ከሰአት ጂኤምቲ

በዚህ ምሳሌ፣ በአፍታ ውስጥ በረዳትነት የተገነባውን ISO 8601 የሚጠበቀውን የቀን ቅርጸት እየተጠቀምን ነው። ጥብቅ መተንተንንም እየተጠቀምን ነው፣ ይህ ማለት አፍታ ከቅርጸቱ ጋር በማይዛመድ የቀን ሕብረቁምፊ ለመገመት አይሞክርም። የISO ያልሆነ የቀን ሕብረቁምፊ ካለፈ፣ ልክ ያልሆነ የቀን ነገርን ያስከትላል፣ እና ስህተት እንጥላለን። ጊዜያዊ አተገባበር ተመሳሳይ ይመስላል, ግን ጥቂት ቁልፍ ልዩነቶች አሉት.

ተግባር getEventTimes(inputString፣ userTimeZone፣ targetTimeZone) { // 1. ግብዓቱን በቀጥታ ወደ ቅጽበታዊ ገጽ እይታ ይንኩት፣ ከዚያ ይፍጠሩ // የ ZonedDateTime በተጠቃሚው ዞን ውስጥ። const instant = Temporal.Instant.from(inputString); const eventTime = instant.toZonedDateTimeISO(ተጠቃሚTimeZone);

// 2. ወደ ዒላማው ዞን ይለውጡ // ይህ በራስ-ሰር አዲስ ነገር ይመልሳል; 'eventTime' ደህንነቱ የተጠበቀ ነው። const targetTime = eventTime.withTimeZone (ታርጌትTimeZone);

// 3. Intl (አብሮገነብ) በመጠቀም ይቅረጹ const አማራጮች = { ዓመት: 'ቁጥር', ወር: 'አጭር', ቀን: "ቁጥር", ሰዓት: 'ቁጥር', ደቂቃ፡- '2-አሃዝ'፣ ሁለተኛ፡ '2-አሃዝ'፣ የሰዓት ዞን ስም፡ 'አጭር' };

ተመለስ { local: eventTime.toLocaleString(navigator.language፣አማራጮች) ኢላማ፡ targetTime.toLocaleString(navigator.language፣አማራጮች) }; }

const መርሐግብር = getEventTimes ( '2026-03-05T15:00-05:00'፣ 'አሜሪካ/ኒው ዮርክ'፣ 'አውሮፓ/ለንደን' );

console.log (መርሃግብር.local); // ማርች 5፣ 2026፣ 3:00:00 ፒኤም EST

console.log (መርሃግብር. targetላማ); // ማርች 5፣ 2026፣ 8፡00፡00 ከሰዓት ጂኤምቲ

ከአፍታ ጋር፣ ለተፈጠሩት የቀን ሕብረቁምፊዎች የቅርጸት ሕብረቁምፊን በግልፅ መግለጽ አለብን። የተጠቃሚው አካባቢ ወይም አካባቢ ምንም ይሁን ምን፣ የዝግጅቱ ጊዜዎች ሁልጊዜ እንደ ማርች 5፣ 2026፣ 3፡00፡00 ይቀረፃሉከሰዓት EST በተጨማሪም, ለየት ያለ ሁኔታን በግልፅ መጣል የለብንም. ልክ ያልሆነ ሕብረቁምፊ ወደ Temporal.Instant.from ከተላለፈ፣ Temporal ልዩነቱን ይጥልብናል። አንድ ነገር ልብ ሊባል የሚገባው ጥብቅ ትንታኔ ቢሆንም የአፍታ ስሪት አሁንም የበለጠ ጨዋ ነው። ጊዜያዊ በሕብረቁምፊው መጨረሻ ላይ የሰዓት ሰቅ ማካካሻ ያስፈልገዋል። እንዲሁም navigator.language እየተጠቀምን ስለሆነ ይህ ኮድ በአሳሽ አካባቢ ውስጥ ብቻ እንደሚሰራ ልብ ይበሉ፣ ምክንያቱም ናቪጌተር በNode.js አካባቢ ስላልተገለጸ። ጊዜያዊ አተገባበር የአሳሹን የአሁኑን አካባቢ (navigator.language) ይጠቀማል፣ ስለዚህ ተጠቃሚው የክስተት ጊዜዎችን በአካባቢያቸው የሰዓት ቅርጸት በራስ-ሰር ያገኙታል። በኤን-ዩኤስ አካባቢ፣ ይህ ማርች 5፣ 2026፣ 3:00:00 ከሰዓት EST ነው። ነገር ግን፣ ተጠቃሚው ለንደን ውስጥ ከሆነ፣ ለምሳሌ፣ የክስተት ጊዜዎቹ እንደ ማርች 5፣ 2026፣ 15፡00፡00 ጂኤምቲ-5 ይቀረፃሉ። ማጠቃለያ

ድርጊት ቅጽበት.js ጊዜያዊ የአሁኑ ጊዜ አፍታ() ጊዜያዊ.አሁን.የዞን ቀንTimeISO() ISO በመተንተን ላይ አፍታ(str) ጊዜያዊ.ፈጣን.ከ(str) ጊዜ ጨምር .አክል(7፣ 'ቀናት') (የተቀየረ) .አክል({ቀናት፡ 7}) (አዲስ ነገር) ልዩነት ልዩነት(ሌላ፣ 'ሰዓታት') .ከ(ሌሎች) ሰአታት የሰዓት ሰቅ .tz('ዞን/ስም') .በTimeZone ('ዞን/ስም')

በመጀመሪያ እይታ፣ ልዩነቱ ትንሽ የተለየ ሊሆን ይችላል (እና በጊዜያዊ፣ አንዳንዴም የበለጠ ቃላቶች እና የበለጠ ጥብቅ) አገባብ፣ ነገር ግን Temporalን ከአፍታ ጊዜ በላይ ለመጠቀም በርካታ ቁልፍ ጥቅሞች አሉት፡-

ይበልጥ ግልጽ መሆን ማለት ያነሱ አስገራሚ ነገሮች እና ያልተጠበቁ ሳንካዎች ማለት ነው። አፍታ ይበልጥ ገር የሆነ ሊመስል ይችላል ነገር ግን "ግምታዊ ስራን" ያካትታል, ይህም አንዳንድ ጊዜ የተሳሳቱ ቀኖችን ሊያስከትል ይችላል. ለጊዜያዊ ያልሆነ ነገር ከሰጡ ስህተትን ይጥላል። ኮዱ የሚሰራ ከሆነ ትክክለኛ ቀን እንዳሎት ያውቃሉ። አፍታ በተለይ የአፍታ-ጊዜ ሰቅ ጥቅልን እየተጠቀሙ ከሆነ በመተግበሪያው ጥቅል ላይ ጉልህ መጠን ሊጨምር ይችላል። ጊዜያዊ ምንም ነገር አይጨምርም (አንድ ጊዜ በዒላማ አሳሾችዎ ውስጥ ከተላከ)። ተለዋዋጭነት የቀን ልወጣዎችን እና ስራዎችን በምታከናውንበት ጊዜ መቼም እንደማትጠፋ ወይም እንደማትጽፍ እምነት ይሰጥሃል። Moment ሁል ጊዜ በUTC የጊዜ ማህተም ዙሪያ መጠቅለያ በሆነበት እንደ ፍላጎቶችዎ ላይ በመመስረት የተለያዩ የጊዜ ውክልናዎች (ቅጽበታዊ፣ PlainDateTime፣ ZonedDateTime)። Temporal ለቀን ቅርጸት የIntl ኤፒአይዎችን ይጠቀማል፣ ይህ ማለት ቶከኖችን በግልፅ መግለጽ ሳያስፈልግዎ የአካባቢ-አወቀ ቅርጸት ሊኖርዎት ይችላል።

በፖሊፊሉ ላይ ማስታወሻዎች ቀደም ሲል እንደጠቀስነው፣ @js-temporal/polyfill የሚባል የ npm ጥቅል ሆኖ የሚሰራጭ ጊዜያዊ ፖሊ ሙሌት አለ። Temporal ዛሬ ለመጠቀም ከፈለጉ እንደ ሳፋሪ እስካሁን ኤፒአይ ያልላኩ አሳሾችን ለመደገፍ ይህ ፖሊፊይል ያስፈልግዎታል። ከዚህ ጋር ያለው መጥፎ ዜና ወደ ጥቅልዎ መጠን ይጨምራል። መልካም ዜናው አሁንም ቢሆን ከአፍታ ወይም ከአፍታ-ሰዓት ሰቅ በእጅጉ ያነሰ ይጨምራል። በBundlephobia.com እንደዘገበው የጥቅል መጠኖች ንፅፅር እነሆ በ npm ጥቅል መጠኖች ላይ መረጃን የሚያቀርብ ድህረ ገጽ (የBundlephobia ትንታኔ ለማየት በእያንዳንዱ የጥቅል ስም ላይ ጠቅ ያድርጉ)

ጥቅል የተቀነሰ የተቀነሰ እና ተጭኗል @js-ጊዜያዊ/polyfill 154.1 ኪ.ባ 44.1 ኪ.ባ አፍታ 294.4 ኪ.ባ 75.4 ኪ.ባ ቅጽበት-ሰዓት ሰቅ 1 ሜባ 114.2 ኪ.ባ

ፖሊፊሉ እንዲሁ በታሪክ የማስታወስ አጠቃቀምን በተመለከተ አንዳንድ የአፈፃፀም ችግሮች ነበሩት ፣ እና በሚጽፉበት ጊዜ ፣ በአልፋ ሁኔታ ውስጥ እንደሆነ ይቆጠራል። በዚህ ምክንያት, የበለጠ የበሰለ ሁኔታ እስኪደርስ ድረስ በምርት ውስጥ መጠቀም ላይፈልጉ ይችላሉ. ሌላው የምስራች ዜናው ፖሊፊሉ ከረጅም ጊዜ በላይ አያስፈልግም (በእርግጥ የቆዩ አሳሾችን መደገፍ ካላስፈለገዎት በስተቀር) ተስፋ እናደርጋለን። በሚጽፉበት ጊዜ ቴምፖራል በ Chrome፣ Edge እና Firefox ውስጥ ተልኳል። ምንም እንኳን በአዲሱ የቴክኖሎጂ ቅድመ-እይታ ላይ ካለው የሩጫ ባንዲራ ጋር የሚገኝ ቢመስልም በSafari ውስጥ እስካሁን ዝግጁ አይደለም።

You May Also Like

Enjoyed This Article?

Get weekly tips on growing your audience and monetizing your content — straight to your inbox.

No spam. Join 138,000+ creators. Unsubscribe anytime.

Create Your Free Bio Page

Join 138,000+ creators on Seemless.

Get Started Free