نزیکەی هەر جۆرە بەرنامەیەک کە بە جاڤاسکڕێپت نووسراوە بە کاتەکان یان بەروارەکان بە هەندێک توانا کاردەکات. لە سەرەتاوە ئەمە سنووردار بوو بە API ی بەرواری ناوەکی. ئەم API کاراییە بنەڕەتییەکان لەخۆدەگرێت، بەڵام تەواو سنووردارە لەوەی کە دەتوانێت بیکات. کتێبخانەکانی لایەنی سێیەم وەک Moment.js و دواتر API بنیات نراوەکانی وەک Intl API و Temporal API نوێ، نەرمییەکی زۆر زیاتر زیاد دەکەن بۆ کارکردن لەگەڵ کات و بەروار. سەرهەڵدان و دابەزینی سات.js Moment.js کتێبخانەی جاڤاسکڕێپتە کە سوودمەندی بەهێزی هەیە بۆ کارکردن لەگەڵ کات و بەروار. تایبەتمەندییە ونبووەکانی APIی بنەڕەتی بەروار لەخۆدەگرێت، وەک دەستکاریکردنی ناوچەی کاتی، و زۆرێک لە کارە باوەکان سادەتر دەکات. هەروەها Moment فەنکشنەکانی فۆرماتکردنی بەروار و کاتەکانی تێدایە. بووە کتێبخانەیەکی بەکارهێنراوی بەرفراوان لە چەندین بەرنامەی جیاوازدا. بەڵام مۆمێنتیش پشکی خۆی لە پرسەکاندا هەبوو. کتێبخانەیەکی گەورەیە، و دەتوانێت بە شێوەیەکی بەرچاو زیاد بکات بۆ قەبارەی باندڵی بەرنامەیەک. لەبەر ئەوەی کتێبخانەکە پشتگیری لە لەرزینی دار ناکات (تایبەتمەندییەکی باندلەرە مۆدێرنەکان کە دەتوانێت بەشە بەکارنەهێنراوەکانی کتێبخانەکان لاببات)، تەواوی کتێبخانەی Moment لەخۆدەگرێت تەنانەت ئەگەر تەنها یەکێک یان دوو لە ئەرکەکانی بەکاربهێنیت. پرسێکی دیکەی Moment ئەوەیە کە ئەو شتانەی کە دروستی دەکات گۆڕاون. بانگهێشتکردنی هەندێک فەنکشن لەسەر ئۆبجێکتی Moment کاریگەری لاوەکی هەیە و بەهای ئەو ئۆبجێکتە دەگۆڕێت. ئەمەش دەتوانێت ببێتە هۆی ڕەفتارێکی چاوەڕواننەکراو یان هەڵە. لە ساڵی ٢٠٢٠دا بەڕێوەبەرانی مۆمێنت بڕیاریاندا کتێبخانەکە بخەنە دۆخی چاککردنەوە. هیچ پەرەپێدانێکی تایبەتمەندی نوێ ئەنجام نادرێت و پارێزەرانیش پێشنیاری ئەوە دەکەن کە بۆ پڕۆژەی نوێ بەکاری نەهێنرێت. کتێبخانەی بەرواری تری جاڤاسکڕێپت هەیە، وەک date-fns، بەڵام یاریزانێکی نوێ لە شارەکەدا هەیە، API یەکە کە ڕاستەوخۆ لە جاڤاسکڕێپتدا دروستکراوە: Temporal. ستانداردێکی نوێیە کە کونەکانی API ی بەرواری ئەسڵی پڕدەکاتەوە هەروەها هەندێک لەو سنووردارکردنانە چارەسەر دەکات کە لە Moment و کتێبخانەکانی تردا دەبینرێن. کاتی چییە؟ Temporal API یەکی نوێی کات و بەروارە کە زیاد دەکرێت بۆ ستانداردی ECMAScript، کە پێناسەی جاڤاسکڕێپتی مۆدێرن دەکات. لە مانگی ئازاری ٢٠٢٦٦ەوە، گەیشتوەتە قۆناغی چوارەمی پرۆسەی TC39 (ئەو لیژنەیەی کە سەرپەرشتی پێشنیارەکان و زیادکردنەکانی زمانی جاڤاسکڕێپت دەکات)، و لە وەشانی داهاتووی تایبەتمەندییەکانی ECMAScriptدا دەخرێتە نێوەوە. پێشتر لە چەند وێبگەڕێکدا جێبەجێ کراوە کە بریتین لە کرۆم ١٤٤+ و فایەرفۆکس ١٣٩+، پێشبینی دەکرێت بەم زووانە سەفاری بەدوایدا بێت. هەروەها polyfill بۆ وێبگەڕە پشتگیری نەکراوەکان و Node.js بەردەستە. Temporal API شتگەلێک دروست دەکات کە بەگشتی نوێنەرایەتی ساتەکان دەکەن لە کاتدا. ئەمانە دەتوانن مۆری تەواوکات و بەروار بن لە ناوچەیەکی کاتیی دیاریکراودا، یان دەتوانن نموونەیەکی گشتی کاتی "کاتژمێری دیوار" بن بەبێ هیچ ناوچەیەکی کاتی یان زانیاری بەروار. هەندێک لە تایبەتمەندییە سەرەکییەکانی Temporal بریتین لە:

کاتەکان بە بەروارەوە یان بەبێ بەروار. ئۆبجێکتی کاتی دەتوانێت نوێنەرایەتی کاتێکی دیاریکراو بکات لە بەروارێکی دیاریکراودا، یان کاتێکی بێ هیچ زانیارییەکی بەروار. هەروەها دەتوانرێت بەروارێکی دیاریکراو، بەبێ کاتێک، نوێنەرایەتی بکرێت. پشتگیری ناوچەی کاتیی. شتە کاتیەکان بە تەواوی ئاگاداری ناوچەی کاتن و دەتوانرێت لە ناوچەی کاتیی جیاوازدا بگۆڕدرێن. Moment پشتگیری لە ناوچە کاتییەکانیش دەکات، بەڵام پێویستی بە کتێبخانەی ناوچەی کاتیی ساتەوەختی زیادە هەیە. Immutability.کاتێک ئۆبجێکتی Temporal دروست بوو، ناتوانرێت بگۆڕدرێت. گۆڕینی ژمێریاری کات یان ناوچەی کاتی دەستکاری شتە بنەڕەتییەکە ناکات. لەبری ئەوە ئۆبجێکتی نوێی Temporal دروست دەکەن. 1-based indexing. سەرچاوەیەکی باوی هەڵەکان لەگەڵ Date API (هەروەها لەگەڵ Moment) ئەوەیە کە مانگەکان سفر-indexed کراون. ئەمەش واتە مانگی یەک مانگی ٠ یە، نەک مانگی ١ وەک هەموومان لە ژیانی ڕاستەقینەدا تێدەگەین. کاتی ئەمە چاک دەکات بە بەکارهێنانی ئیندێکسکردنی بنەمادار بە 1 — مانگی یەک مانگی یەکەمە. لەناو وێبگەڕەکەدا دروستکراوە. بەو پێیەی Temporal API یەکە لە خودی وێبگەڕەکەدا، هیچ شتێک زیاد ناکات بۆ قەبارەی باندڵی بەرنامەکەت.

هەروەها گرنگە ئاماژە بەوە بکەین کە API ی بەروار ناڕوات. لە کاتێکدا کە Temporal جێگەی ئەم API یە دەگرێتەوە، بەڵام لانابرێت یان بەکارنەهێنرێت. زۆرێک لە بەرنامەکان دەشکێن ئەگەر وێبگەڕەکان لەناکاو API ی بەرواریان لابرد. بەڵام ئەوەش لەبەرچاو بگرە کە ئێستا مۆمێنت بە پڕۆژەیەکی میراتی دادەنرێت لە دۆخی چاککردنەوەدا. لە باقی بابەتەکەدا، سەیری هەندێک “ڕێچکە” دەکەین بۆ گواستنەوەی کۆدی بنەمادار بە Moment بۆ API نوێی Temporal. با دەست بکەین بە ڕیفاکتۆرکردن! دروستکردنی شتەکانی بەروار و کات پێش ئەوەی بتوانین دەستکاری بەروار و کاتەکان بکەین، دەبێت شتگەلێک دروست بکەین کە نوێنەرایەتیان دەکەن. بۆ دروستکردنی ئۆبجێکتی Moment کە نوێنەرایەتی بەروار و کاتی ئێستا دەکات، فەنکشنی moment بەکاربهێنە. const ئێستا = سات (); console.log(ئێستا)؛ // سات<2026-02-18T21:26:29-05:00>

ئێستا دەتوانرێت ئەم ئۆبجێکتە بەپێی پێویست فۆرمات بکرێت یان دەستکاری بکرێت.

// گۆڕینی بۆ UTC //ئاگادارکردنەوە: ئەمە ئۆبجێکتی Moment دەگۆڕێت و دەیخاتە دۆخی UTC! console.log (ئێستا.utc ()); // سات<2026-02-19T02:26:29Z>

// ڕستەیەکی فۆرماتکراو چاپ بکە - تێبینی بکە کە ئێستا کاتی UTC بەکاردەهێنێت console.log (ئێستا.فۆرمات ('MM / DD / YYYY hh: ملم: ss a')); // 02/19/2026 02:27:07 بەیانی

شتێکی سەرەکی کە دەبێت لەبیرت بێت لەبارەی Moment ئەوەیە کە ئۆبجێکتی Moment هەمیشە زانیاری دەربارەی کات و بەروارەکەی لەخۆدەگرێت. ئەگەر تەنها پێویستت بە کارکردن بێت لەگەڵ زانیارییەکانی کات، ئەمە بەزۆری باشە، بەڵام دەتوانێت ببێتە هۆی ڕەفتارێکی چاوەڕواننەکراو لە دۆخەکانی وەک کاتی ڕۆژ یان ساڵانی کزی، کە بەروارەکە دەتوانێت کاریگەری لەسەر حیساباتی کات هەبێت. کاتیی زیاتر نەرم و نیانە. دەتوانیت ئۆبجێکتی دروست بکەیت کە نوێنەرایەتی بەروار و کاتی ئێستا بکات بە دروستکردنی ئۆبجێکتی Temporal.Instant. ئەمەش نوێنەرایەتی خاڵێکی کات دەکات کە لەلایەن کاتەوە پێناسە کراوە لە دوای "سەردەمەوە" (نیوە شەوی UTC لە 1ی ژانویەی 1970). کاتی دەتوانێت ئاماژە بەم چرکەیە بکات لە کاتدا بە وردبینی ئاستی نانۆ چرکە. const ئێستا = کاتی.ئێستا.چرکە ();

// نانۆ چرکە خاوەکان ببینە لە سەردەمەوە console.log (ئێستا.epochNanoseconds); // 1771466342612000000n

// فۆرمات بۆ UTC console.log (ئێستا.بۆ ڕیز ()); // 2026-02-19T01:55:27.844Z

// فۆرمات بۆ ناوچەیەکی کاتیی دیاریکراو console.log(now.toString({ ناوچەی کات: 'ئەمریکا/نیویۆرک' })); // 2026-02-18T20:56:57.905-05:00

هەروەها دەتوانرێت شتەکانی Temporal.Instant بۆ کات و بەروارێکی دیاریکراو دروست بکرێت بە بەکارهێنانی شێوازی from static.

const myInstant = کاتی.چرکە.لە ('2026-02-18T21:10:00-05:00');

// فۆرماتکردنی چرکەیەک لە ناوچەی کاتیی ناوخۆیی. تێبینی بکە کە ئەمە تەنها کۆنتڕۆڵ دەکات // فۆرماتکردنەکە - وەک moment.utc گۆڕانکاری لە شتەکەدا ناکات. console.log(myInstant.toString({ ناوچەی کات: 'ئەمریکا/نیویۆرک' })); // 2026-02-18T21:10:00-05:00

هەروەها دەتوانیت جۆرەکانی تری ئۆبجێکتی Temporal دروست بکەیت، لەوانە:

Temporal.PlainDate: بەروارێکە کە هیچ زانیارییەکی کاتیی نییە. Temporal.PlainTime: کاتێکە کە زانیاری بەروارەکەی نییە. Temporal.ZonedDateTime: بەروار و کاتێکە لە ناوچەیەکی کاتیی دیاریکراودا.

هەریەک لەمانە شێوازێکی from یان هەیە کە دەتوانرێت بە ئۆبجێکتی بانگهێشت بکرێت کە بەروار و/یان کات دیاری دەکات، یان ڕستەیەکی بەروار بۆ شیکردنەوە. // تەنها بەروارێکە const ئەمڕۆ = کاتی.بەرواری سادە.لە({ ساڵ: ٢٠٢٦، ٢٠٢٠. مانگ: ٢، // تێبینی ئێمە ٢ بەکاردەهێنین بۆ مانگی شوبات ڕۆژ: 18 }); console.log (ئەمڕۆ.بۆ ڕیز ()); // 2026-02-18

// تەنها کاتێکە const lunchTime = کاتی.کاتی سادە.لە({ کاتژمێر: ١٢ }); console.log (کاتی نیوەڕۆ.بۆ ڕیز ()); // کاتژمێر ١٢:٠٠:٠٠

// بەروار و کاتێکە لە ناوچەی کاتی ڕۆژهەڵاتی ئەمریکا const dueAt = کاتی.کاتی بەرواری ناوچەیی.لە ({ timeZone: 'ئەمریکا/نیویۆرک'، ساڵ: ٢٠٢٦، ٢٠٢٠. مانگ: ٣، ٢٠١٩. ڕۆژ: ١، ٢٠١٩. کاتژمێر: ١٢، ٢٠١٩. خولەک: 0, دووەم: 0 }); console.log (dueAt.toString ()); // 2026-03-01T12:00:00-05:00[ئەمریکا/نیویۆرک]

پارسینگ ئێمە دروستکردنی بەرنامەیی زانیاری بەروار و کاتمان گرتۆتەوە. ئێستا با سەیری پارسکردن بکەین. پارسینگ یەکێکە لەو بوارانەی کە Moment نەرمترە لە Temporal API ی ناوەکی. دەتوانیت ڕیزێکی بەروار شی بکەیتەوە بە تێپەڕاندنی بۆ فەنکشنی moment. بە یەک ئارگومێنت، Moment چاوەڕوانی ڕستەی بەرواری ISO دەکات، بەڵام دەتوانیت فۆرماتەکانی بەدیل بەکاربهێنیت ئەگەر ئارگومێنتێکی دووەم پێشکەش بکەیت کە فۆرماتەکەی بەرواری بەکارهێنراو دیاری بکات.

const isoDate = سات ('2026-02-21T09:00:00'); const formattedDate = سات ('2/21/26 9:00:00'، 'M/D/YY h:mm:ss');

console.log (بەرواری iso); // سات<2026-02-21T09:00:00-05:00>

console.log (بەرواری فۆرماتکراو); // سات<2026-02-21T09:00:00-05:00>

لە وەشانی کۆنتردا، Moment باشترین پێشبینی دەکات بۆ شیکردنەوەی هەر ڕیزێکی بەروار کە بە ئارەزووی خۆی فۆرمات کراوە. ئەمەش دەتوانێت ئەنجامێکی پێشبینینەکراوی لێبکەوێتەوە. بۆ نموونە ئایا 02-03-2026 ٢ی شوباتە یان ٣ی ئازار؟ هەر لەبەر ئەم هۆکارە، وەشانی نوێتری Moment هۆشدارییەکی بەرچاوی کەمکردنەوە پیشان دەدەن ئەگەر بەبێ ڕیزێکی بەرواری فۆرماتکراوی ISO بانگ بکرێت (مەگەر ئارگومێنتی دووەم بە فۆرماتە خوازراوەکەش بدرێت). Temporal تەنها ڕیزێکی بەروار کە بە تایبەتی فۆرمات کراوە شی دەکاتەوە. ڕیزەکە دەبێت لەگەڵ فۆرماتەکەی ISO 8601 یان درێژکراوەی خۆی، RFC 9557 بگونجێت. ئەگەر ڕیزێکی بەرواری ناپابەند بگوازرێتەوە بۆ شێوازی from، Temporal RangeError فڕێدەدات.

// بەکارهێنانی ڕیزێکی بەرواری RFC 9557 const myDate = Temporal.Instant.from('2026-02-21T09:00:00-05:00[ئەمریکا/نیویۆرک]'); console.log(myDate.toString({ ناوچەی کات: 'ئەمریکا/نیویۆرک' })); // 2026-02-21T09:00:00-05:00

// بەکارهێنانی ڕیزێکی بەرواری نەناسراو const بەرواری تر = کاتی.چرکە.لە ('2/21/26 9:00:00'); // RangeError: هەڵەی کاتی: کاراکتەری نادروست لەکاتی شیکردنەوەی بەهای ساڵ.

پێداویستییە وردەکانی ڕستەی بەروارەکە بەندە بەوەوە کە تۆ کام جۆری ئۆبجێکتی Temporal دروست دەکەیت. لە نموونەی سەرەوەدا Temporal.Instant پێویستی بە ISO ی تەواو هەیە8601 یان RFC 9557 ڕستەی بەروار کە بەروار و کات دیاری دەکات بە ئۆفسێتی ناوچەی کاتی، بەڵام دەتوانیت شتەکانی PlainDate یان PlainTime دروست بکەیت بە بەکارهێنانی تەنها ژێرکۆمەڵێک لە فۆرماتەکەی بەروار. const بەرواری من = کاتی.بەرواری سادە.لە ('2026-02-21'); console.log (بەرواری من.بۆ ڕیز ()); // 2026-02-21

const myTime = کاتی.کاتی سادە.لە ('09:00:00'); console.log (کاتی من.بۆ ڕیز ()); // کاتژمێر ٠٩:٠٠:٠٠

تێبینی بکە کە ئەم ڕستە هێشتا دەبێت لەگەڵ فۆرماتە چاوەڕوانکراوەکەدا بگونجێت، یان هەڵەیەک فڕێ دەدرێت.

// بەکارهێنانی ڕیزێکی کاتیی ناپابەند. ئەمانە هەموویان RangeError فڕێ دەدەن. کاتی.کاتی سادە.لە ('9:00'); کاتی.کاتی سادە.لە ('9:00:00 AM');

ئامۆژگاری پڕۆ: مامەڵەکردن لەگەڵ ڕستەی نا-ISO لەبەر ئەوەی Temporal متمانەپێکردن لە پێشینەی کارەکاندایە، هەوڵ نادات فۆرماتەکەی ڕیزێکی وەک 02-01-2026 پێشبینی بکات. ئەگەر سەرچاوەی داتاکانت ئەم جۆرە ڕستەیانە بەکاربهێنێت، پێویستە هەندێک دەستکاریکردنی ڕیزەکان بکەیت بۆ ڕێکخستنەوەی بەهاکان بۆ ڕیزێکی ISO وەک 2026-02-01 پێش ئەوەی هەوڵی بەکارهێنانی بدەیت لەگەڵ Temporal.

فۆرماتکردن کاتێک کە شتێکی Moment یان Temporalت هەبوو، بە ئەگەرێکی زۆرەوە بتەوێت لە شوێنێکدا بیگۆڕیت بۆ ڕستەیەکی فۆرماتکراو. ئەمە نموونەیەکە کە مۆمێنت کەمێک کورتترە. تۆ شێوازی فۆرماتکردنی شتەکە بانگ دەکەیت بە ڕیزێک لە تۆکنەکان کە فۆرماتەکەی بەرواری دڵخواز باس دەکەن. const بەروار = سات ();

console.log (بەروار.فۆرمات ('MM / DD / YYYY')); // 02/22/2026

console.log (بەروار.فۆرمات ('MMMM Do YYYY، h: mm: ss a')); // ٢٢ی شوباتی ٢٠٢٦، کاتژمێر ٨:١٨:٣٠ی شەو

لە لایەکی ترەوە، Temporal پێویستی بەوەیە کەمێک زیاتر قسەخۆش بیت. شتە کاتیەکان، وەک Instant، شێوازێکی toLocaleString یان هەیە کە هەڵبژاردەی فۆرماتکردنی جۆراوجۆر وەرئەگرێت کە وەک تایبەتمەندی ئۆبجێکتی دیاری کراون.

const بەرواری = کاتی.ئێستا.چرکە ();

// بەبێ هیچ ئارگومێنتێک، فۆرماتەکەی پێشوەختە بۆ ناوچەی ئێستا بەدەست دەهێنین console.log (بەروار.بۆ ڕیزبەندی شوێن ()); // 2/22/2026, 8:23:36 PM (بە گریمانەکردنی ناوچەی en-US)

// هەڵبژاردەکانی فۆرماتکردن تێپەڕێنە بۆ دروستکردنی ڕیزێکی فۆرماتکردنی تایبەت console.log(بەروار.بۆLocaleString('کو-ئەمریکی', { مانگ: 'درێژ'، ڕۆژ: 'ژمارەیی'، ساڵ: 'ژمارەیی'، کاتژمێر: '2-ژمارە'، خولەک: '2-ژمارە'. })); // ٢٢ی شوباتی ٢٠٢٦ کاتژمێر ٨:٢٣ی پاشنیوەڕۆ

// تەنها ئەو بوارانە تێپەڕێنە کە دەتەوێت لە ڕستەی فۆرماتەکەدا console.log(بەروار.بۆLocaleString('کو-ئەمریکی', { مانگ: 'کورتە'، ڕۆژ: 'ژمارەیی'. })); // ٢٢ی شوبات

فۆرماتکردنی بەرواری کاتی لە ڕاستیدا Intl.DateTimeFormat API بەکاردەهێنێت (کە پێشتر بە ئاسانی لە وێبگەڕە مۆدێرنەکاندا بەردەستە) لە ژێر کابۆکەدا. واتە دەتوانیت ئۆبجێکتی DateTimeFormat دروست بکەیت کە دەتوانرێت دووبارە بەکاربهێنرێتەوە بە هەڵبژاردەکانی فۆرماتکردنی تایبەتمەندت، پاشان شتەکانی Temporal بگوازیتەوە بۆ شێوازی فۆرماتکردنی. بەهۆی ئەمەوە پشتگیری لە فۆرماتەکانی بەرواری تایبەت ناکات وەک ئەوەی Moment دەیکات. ئەگەر پێویستت بە شتێکی وەک 'Q1 2026' یان فۆرماتکردنی تایبەتی ترە، لەوانەیە پێویستت بە هەندێک کۆدی فۆرماتکردنی بەرواری تایبەت بێت یان دەستت بگات بۆ کتێبخانەی لایەنی سێیەم. const formatter = new Intl.DateTimeFormat('کورد-ئەمریکی', { مانگ: '2-ژمارە'، ڕۆژ: '2-ژمارە'، ساڵ: 'ژمارەیی'. });

const بەرواری = کاتی.ئێستا.چرکە (); console.log (فۆرماتەر.فۆرمات (بەروار)); // 02/22/2026

تۆکنەکانی فۆرماتکردنی Moment’s سادەترن بۆ نووسین، بەڵام دۆستی ناوچەیی نین. فۆرماتەکە شتەکانی وەک ڕێزبەندی مانگ/ڕۆژ بە “کۆدی ڕەق” ڕیز دەکات. سوودی بەکارهێنانی ئۆبجێکتی ڕێکخستن، وەک چۆن Temporal دەیکات، ئەوەیە کە بە شێوەیەکی ئۆتۆماتیکی خۆی لەگەڵ هەر لۆکاڵییەکی دیاریکراودا دەگونجێنێت و فۆرماتێکی دروست بەکاردەهێنێت. const date = کاتی.ئێستا.چرکە ();

const فۆرماتهەڵبژاردنەکان = { مانگ: 'ژمارەیی'، ڕۆژ: 'ژمارەیی'، ساڵ: 'ژمارەیی'. };

console.log(بەروار.بۆLocaleString('کو-ئەمریکی'، هەڵبژاردەکانی فۆرمات)); // ٢/٢٢/٢٠٢٦

console.log (بەروار.بۆLocaleString ('en-GB'، هەڵبژاردەکانی فۆرمات)); // ٢٢/٠٢/٢٠٢٦

حیساباتی بەروار لە زۆرێک لە بەرنامەکاندا، پێویستە لە کۆتاییدا هەندێک حیسابات لە بەروارێکدا ئەنجام بدەیت. لەوانەیە بتەوێت یەکەکانی کات (ڕۆژ، کاتژمێر، چرکە و هتد) زیاد بکەیت یان کەم بکەیتەوە. بۆ نموونە ئەگەر بەرواری ئێستات هەبێت، لەوانەیە بتەوێت بەروارەکە پیشانی بەکارهێنەر بدەیت 1 هەفتە لەمەودوا. ئۆبجێکتی ساتەکان شێوازی وەک زیادکردن و کەمکردنەوەیان هەیە کە ئەم کارانە ئەنجام دەدەن. ئەم فەنکشنانە بەها و یەکەیەک وەردەگرن، بۆ نموونە: add(7, 'days'). بەڵام جیاوازییەکی زۆر گرنگ لە نێوان Moment و Temporal ئەوەیە کە لە کاتی ئەنجامدانی ئەم حیساباتانەی بەرواردا، شتە بنەڕەتییەکە دەستکاری دەکرێت و بەهای سەرەتایی لەدەست دەچێت. const ئێستا = سات ();

console.log(ئێستا)؛ // سات<2026-02-24T20:08:36-05:00>

const هەفتەی داهاتوو = ئێستا.زیادکردن (7، 'ڕۆژەکان'); console.log (هەفتەی داهاتوو); // سات<2026-03-03T20:08:36-05:00>

// گۆتچا - شتە ئەسڵییەکە گۆڕاوە console.log(ئێستا)؛ // سات<2026-03-03T20:08:36-05:00>

بۆ ئەوەی بەرواری ئەسڵی لەدەست نەچێت، دەتوانیت لەسەر ئۆبجێکتی Moment بانگی clone بکەیت بۆ دروستکردنی کۆپییەک. const ئێستا= سات (); const هەفتەی داهاتوو = ئێستا.کلۆن (). زیادکردن (7، 'ڕۆژەکان');

console.log(ئێستا)؛ // سات<2026-02-24T20:12:55-05:00>

console.log (هەفتەی داهاتوو); // سات<2026-03-03T20:12:55-05:00>

لە لایەکی ترەوە شتە کاتیەکان نەگۆڕن. کاتێک ئۆبجێکتی وەک Instant و PlainDate و هتد دروست دەکەیت، بەهای ئەو ئۆبجێکتە هەرگیز ناگۆڕێت. هەروەها شتە کاتیەکان شێوازی زیادکردن و کەمکردنەوەیان هەیە. Temporal کەمێک هەڵبژاردەیە سەبارەت بەوەی کە کام یەکە کاتییەکان دەتوانرێت زیاد بکرێت بۆ کام جۆری ئۆبجێکتی. بۆ نموونە ناتوانیت ڕۆژەکان زیاد بکەیت بۆ Instant:

const ئێستا = کاتی.ئێستا.چرکە (); const هەفتەی داهاتوو = ئێستا.زیادکردن ({ ڕۆژەکان: 7 }); // RangeError: هەڵەی کاتی: گەورەترین یەکە ناتوانێت یەکەیەکی بەروار بێت

ئەمەش لەبەر ئەوەیە کە شتەکانی Instant نوێنەرایەتی خاڵێکی دیاریکراوی کات دەکەن لە UTC و ساڵنامە-ئاگنۆستیکن. لەبەر ئەوەی درێژی ڕۆژێک دەتوانێت بگۆڕێت بە پشتبەستن بە یاساکانی ناوچەی کاتی وەک کاتی ڕۆژ، ئەم حیساباتە لە Instant بەردەست نییە. بەڵام دەتوانیت ئەم کارە لەسەر جۆرەکانی تری شتەکان ئەنجام بدەیت، وەکو PlainDateTime: const ئێستا = کاتی.ئێستا.بەرواری سادەکاتISO (); console.log (ئێستا.بۆ ڕیزبەندی شوێن ()); // ٢/٢٤/٢٠٢٦، کاتژمێر ٨:٢٣:٥٩ی پاشنیوەڕۆ

const هەفتەی داهاتوو = ئێستا.زیادکردن ({ ڕۆژەکان: 7 });

// تێبینی بکە کە PlainDateTime ی ئەسڵی وەک خۆی دەمێنێتەوە console.log (ئێستا.بۆ ڕیزبەندی شوێن ()); // ٢/٢٤/٢٠٢٦، کاتژمێر ٨:٢٣:٥٩ی پاشنیوەڕۆ

console.log (هەفتەی داهاتوو.بۆ ڕیزبەندی شوێن ()); // ٣/٣/٢٠٢٦، کاتژمێر ٨:٢٣:٥٩ی پاشنیوەڕۆ

هەروەها دەتوانیت حیساب بکەیت کە چەند کات لە نێوان دوو ئۆبجێکتی Moment یان Temporalدایە. لەگەڵ فەنکشنی diff ی Moment پێویستە یەکەیەکی بۆ دانەوێڵە دابین بکەیت، ئەگەرنا جیاوازییەکە بە میلی چرکە دەگەڕێنێتەوە. const بەرواری1 = سات ('2026-02-21T09:00:00'); const بەرواری2 = سات ('2026-02-22T10:30:00');

console.log (بەرواری2.جیاوازی (بەروار1)); // 91800000

console.log(بەرواری2.جیاوازی (بەرواری1، 'ڕۆژەکان')); // 1

بۆ ئەوەی ئەمە بە ئۆبجێکتی Temporal بکەیت، دەتوانیت ئۆبجێکتی Temporal ی تر بگوازیتەوە بۆ میتۆدەکانی until یان since. ئەمەش ئۆبجێکتی Temporal.Duration دەگەڕێنێتەوە کە زانیاری دەربارەی جیاوازی کات لەخۆدەگرێت. ئۆبجێکتی Duration تایبەتمەندی هەیە بۆ هەر پێکهاتەیەکی جیاوازییەکە، هەروەها دەتوانێت ڕیزێکی ماوەی ISO 8601 دروست بکات کە نوێنەرایەتی جیاوازی کات دەکات.

const بەرواری1 = کاتی.کاتی بەرواری سادە.لە ('2026-02-21T09:00:00'); const بەرواری2 = کاتی.کاتی بەرواری سادە.لە ('2026-02-22T10:30:00');

// largestUnit گەورەترین یەکەی کات دیاری دەکات بۆ نوێنەرایەتیکردن // لە حیسابکردنی ماوەی const diff = بەروار2.since (بەرواری1, { گەورەترین یەکە: 'ڕۆژ' });

console.log (جیاوازی.ڕۆژەکان); // 1

console.log (جیاوازی.کاتژمێرەکان); // 1

console.log (جیاوازی.خولەک); // 30

console.log (جیاوازی.بۆڕیز ()); // P1DT1H30M // (ڕیزەکەی ماوەی ISO 8601: 1 ڕۆژ، 1 کاتژمێر، 30 خولەک)

بەراوردکردنی بەروار و کاتەکان Moment و Temporal هەردووکیان ڕێگەت پێدەدەن بەروار و کاتەکان بەراورد بکەیت بۆ ئەوەی بزانیت کامیان پێش ئەوی دیکە دێت، بەڵام ڕێگەی جیاواز لەگەڵ API بگرنەبەر. Moment شێوازەکانی وەک isBefore و isAfter و isSame دابین دەکات بۆ بەراوردکردنی دوو ئۆبجێکتی Moment. const بەرواری1 = سات ('2026-02-21T09:00:00'); const بەرواری2 = سات ('2026-02-22T10:30:00');

console.log (بەروار1.پێش (بەرواری2)); // ڕاستە

Temporal شێوازی بەراوردکردنی ئیستاتیک بەکاردەهێنێت بۆ ئەنجامدانی بەراوردکردن لە نێوان دوو شت لە هەمان جۆر. -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 پێش date2 دێت، بۆیە -1 console.log(Temporal.PlainDate.compare (بەرواری1، بەرواری2));

// هەڵە ئەگەر هەوڵ بدەین دوو ئۆبجێکتی جۆری جیاواز بەراورد بکەین console.log(Temporal.PlainDate.compare (بەرواری1، کاتی.ئێستا.چرکە())); // TypeError: هەڵەی کاتی: بواری PlainDate نادروست دابین کراوە.

بە تایبەتی ئەمە وا دەکات کە ڕیزبەندییەک لە شتەکانی Temporal بە شێوەیەکی کرۆنۆلۆژی ئاسان بێت. // ڕیزبەندییەک لە شتەکانی Temporal.PlainDate بەروارەکانی const = [ ... ];

// Temporal.PlainDate.compare وەکو فەنکشنی بەراوردکار بەکاربهێنە dates.sort(کاتی.بەرواری سادە.بەراوردکردن);

گۆڕینی ناوچەی کات کتێبخانەی ناوەکی Moment پشتگیری لە گۆڕینی ناوچەی کاتی ناکات. ئەگەر پێویستت بەم کاراییە هەیە، پێویستە پاکێجی moment-timezone دابمەزرێنیت. ئەم پاکێجە بە دار نالەرزێت، و هەربۆیە دەتوانێت بە شێوەیەکی بەرچاو زیاد بکات بۆ قەبارەی باندڵەکەت. کاتێک کە moment-timezoneت دامەزراند، دەتوانیت شتەکانی Moment بگۆڕیت بۆ ناوچەی کاتیی جیاواز بە شێوازی tz. وەک لە ئۆپەراسیۆنەکانی تری Moment، ئەمەش گۆڕانکاری لە بنەڕەتیدا دەکاتشت. // بە گریمانەکردنی کاتی ڕۆژهەڵاتی ئەمریکا const ئێستا = سات (); console.log(ئێستا)؛ // سات<2026-02-28T20:08:20-05:00>

// گۆڕینی بۆ کاتی زەریای هێمن. // سەردەمی ڕۆژهەڵاتی ڕەسەن لەدەستچوو. now.tz('ئەمریکا/لۆس_ئەنجلێس'); console.log(ئێستا)؛ // سات<2026-02-28T17:08:20-08:00>

کارایی ناوچەی کاتی لەناو Temporal API دروستکراوە کاتێک ئۆبجێکتی Temporal.ZonedDateTime بەکاردەهێنرێت. ئەم شتانە شێوازێکی withTimeZone لەخۆدەگرن کە ZonedDateTime ێکی نوێ دەگەڕێنێتەوە کە نوێنەرایەتی هەمان سات لە کاتدا دەکات، بەڵام لە ناوچەی کاتیی دیاریکراودا. // دیسانەوە بە گریمانەکردنی کاتی ڕۆژهەڵاتی ئەمریکا const ئێستا = Temporal.Now.zonedDateTimeISO (); console.log (ئێستا.بۆ ڕیزبەندی شوێن ()); // 2/28/2026، 8:12:02 PM بە کاتی ناوەندی ئەمریکا

// گۆڕینی بۆ کاتی زەریای هێمن const nowPacific = now.withTimeZone('ئەمریکا/لۆس_ئەنجلێس'); console.log (ئێستا زەریای هێمن.بۆ ڕیزبەندی شوێن ()); // ٢/٢٨/٢٠٢٦، کاتژمێر ٥:١٢:٠٢ی پاشنیوەڕۆ بە کاتی ناوەندی ئەمریکا

// ئۆبجێکتی ئەسڵی وەک خۆی دەمێنێتەوە console.log (ئێستا.بۆ ڕیزبەندی شوێن ()); // 2/28/2026، 8:12:02 PM بە کاتی ناوەندی ئەمریکا

تێبینی: بەها فۆڕماتکراوەکان کە لەلایەن toLocaleString ەوە دەگەڕێندرێنەوە، وەک ناوەکە ئاماژەی پێدەکات، وابەستەن بە ناوچەکە. کۆدی نمونەیی لە ناوچەی en-US پەرەی پێدراوە، بۆیە فۆرماتەکە بەم شێوەیە: 2/28/2026, 5:12:02 PM PST. لە ناوچەیەکی تردا، ڕەنگە ئەمە جیاواز بێت. بۆ نموونە لە ناوچەی en-GB شتێکی وەک 28/2/2026، 17:12:02 GMT-8 بەدەست دەهێنیت. ڕیفاکتەرکردنێکی جیهانی ڕاستەقینە گریمان ئێمە ئەپێک بۆ خشتەی ڕووداوەکان لە سەرانسەری ناوچە کاتییەکان دروست دەکەین. بەشێک لەم ئەپە فەنکشنێکە بە ناوی getEventTimes کە ڕستەیەکی ISO 8601 وەردەگرێت کە نوێنەرایەتی کات و بەرواری ڕووداوەکە دەکات و ناوچەیەکی کاتیی ناوخۆیی و ناوچەیەکی کاتیی ئامانجدارە. فەنکشنەکە ڕیزەکانی کات و بەرواری فۆرماتکراو بۆ ڕووداوەکە لە هەردوو ناوچەی کاتییدا دروست دەکات. ئەگەر فەنکشنەکە ڕیزێکی هاتنەژوورەوەی پێدرا کە ڕیزێکی کاتی/بەروارێکی دروست نییە، ئەوا هەڵەیەک فڕێدەدات. لێرەدا جێبەجێکردنی ئەسڵی، بە بەکارهێنانی Moment (هەروەها پێویستی بە بەکارهێنانی پاکێجی moment-timezone هەیە).

هاوردەکردنی سات لە 'سات-ناوچەی کاتی'؛

function getEventTimes(inputString, ناوچەی کاتی بەکارهێنەر، ناوچەی کاتی ئامانج) { const timeFormat = 'MMM D، YYYY، h:mm:ss a z'؛

// 1. دروستکردنی ساتەوەختی سەرەتایی لە ناوچەی کاتی بەکارهێنەردا const کاتەکانی ڕووداو = moment.tz( inputString، moment.ISO_8601, // چاوەڕوانی ڕیزێکی ISO 8601 بکە ڕاستە، // شیکردنەوەی توند userTimeZone );

// هەڵەیەک فڕێ بدە ئەگەر inputString نوێنەرایەتی بەروارێکی دروستی نەکرد ئەگەر (!کاتی ڕووداو.بەڕاستە()) { throw new Error('داخڵکردنی بەروار/کاتی نادروست'); }

// 2. کاتی ئامانجەکە حیساب بکە // CRITICAL: دەبێت کلۆن بکەین، یان 'eventTime' بۆ هەمیشە دەگۆڕێت! const کاتی ئامانج = کاتی ڕووداو.کلۆن ().tz (ناوچەی کاتی ئامانج);

گەڕانەوە { ناوخۆیی: eventTime.format(کات فۆرمات)، ئامانج: targetTime.format(کات فۆرمات)، }; }

const خشتەی = getEventTimes( '2026-03-05T15:00-05:00'، 'ئەمریکا/نیویۆرک'، 'ئەوروپا/لەندەن'، );

console.log (خشتە.خۆجێی); // ٥ی ئازاری ٢٠٢٦، کاتژمێر ٣:٠٠:٠٠ی پاشنیوەڕۆ بە کاتی ناوەندی ئەمریکا

console.log (خشتە.ئامانج); // ٥ی ئازاری ٢٠٢٦، کاتژمێر ٨:٠٠:٠٠ی شەو بە کاتی ناوەندی ئەمریکا

لەم نموونەیەدا، ئێمە فۆرماتێکی بەرواری چاوەڕوانکراوی ISO 8601 بەکاردەهێنین، کە بە شێوەیەکی یارمەتیدەر لە Momentدا دروستکراوە. هەروەها ئێمە پارسینگێکی توند بەکاردەهێنین، ئەمەش واتە Moment هەوڵ نادات بە ڕیزێکی بەروار پێشبینی بکات کە لەگەڵ فۆرماتەکەدا ناگونجێت. ئەگەر ڕستەیەکی بەرواری نا-ISO تێپەڕێنرێت، ئەوە دەبێتە هۆی ئۆبجێکتی بەرواری نادروست، و ئێمە هەڵەیەک فڕێدەدەین. جێبەجێکردنی Temporal هاوشێوەیە، بەڵام چەند جیاوازییەکی سەرەکی هەیە.

function getEventTimes(inputString, ناوچەی کاتی بەکارهێنەر، ناوچەی کاتی ئامانج) { // 1. ڕاستەوخۆ ئینپوتەکە پارس بکە بۆ ناو Instant، پاشان دروست بکە // ZonedDateTime لە ناوچەی بەکارهێنەر. const instant = کاتی.چرکە.لە (inputString); const eventTime = instant.toZonedDateTimeISO (ناوچەی کاتی بەکارهێنەر);

// 2. گۆڕینی بۆ ناوچەی ئامانج // ئەمە بە شێوەیەکی ئۆتۆماتیکی ئۆبجێکتی NEW دەگەڕێنێتەوە؛ 'eventTime' سەلامەتە. const targetTime = eventTime.withTimeZone (ناوچەی کاتی ئامانج);

// 3. فۆرماتکردن بە بەکارهێنانی Intl (بنیات نراوە) هەڵبژاردەکانی const = { ساڵ: 'ژمارەیی'، مانگ: 'کورتە'، ڕۆژ: 'ژمارەیی'، کاتژمێر: 'ژمارەیی'، خولەک: '٢ ژمارەیی'، دووەم: '2-ژمارە'، timeZoneName: 'کورتە'. };

گەڕانەوە { ناوخۆیی: eventTime.toLocaleString(زمانی ڕێپێوان، هەڵبژاردنەکان)، ئامانج: targetTime.toLocaleString(زمانی ڕێپێوان، هەڵبژاردنەکان) }; }

const خشتەی = getEventTimes( '2026-03-05T15:00-05:00'، 'ئەمریکا/نیویۆرک'، 'ئەوروپا/لەندەن'، );

console.log (خشتە.خۆجێی); // ٥ی ئازاری ٢٠٢٦، کاتژمێر ٣:٠٠:٠٠ی پاشنیوەڕۆ بە کاتی ناوەندی ئەمریکا

console.log (خشتە.ئامانج); // 5ی ئازاری 2026، کاتژمێر 8:00:00 PM GMT

لەگەڵ Moment، دەبێت بە ڕوونی ڕیزێکی فۆرمات بۆ ڕیزەکانی بەرواری دەرەنجامی دیاری بکەین. بەبێ گوێدانە شوێن یان ناوچەی بەکارهێنەر، کاتەکانی ڕووداوەکان هەمیشە بەم شێوەیە فۆرمات دەکرێن Mar 5, 2026, 3:00:00pm EST. هەروەها، پێویست ناکات بە ڕوونی ئیستسنایەک فڕێ بدەین. ئەگەر ڕستەیەکی نادروست بگوازرێتەوە بۆ Temporal.Instant.from، Temporal ئیستسنای بۆ ئێمە فڕێدەدات. شتێک کە پێویستە ئاماژەی پێبدەین ئەوەیە کە تەنانەت بە پارسینگێکی توندەوە، وەشانی Moment هێشتا نەرمترە. Temporal پێویستی بە ئۆفسێتی ناوچەی کاتی هەیە لە کۆتایی ڕیزەکەدا. هەروەها پێویستە تێبینی ئەوە بکەیت کە بەو پێیەی ئێمە navigator.language بەکاردەهێنین، ئەم کۆدە تەنها لە ژینگەی وێبگەڕێکدا کاردەکات، چونکە navigator لە ژینگەی Node.js پێناسە نەکراوە. جێبەجێکردنی Temporal ناوچەی ئێستای وێبگەڕەکە بەکاردەهێنێت (navigator.language)، بۆیە بەکارهێنەر بە شێوەیەکی ئۆتۆماتیکی کاتەکانی ڕووداوەکان بە فۆرماتکردنی کاتی ناوخۆیی خۆی فۆرمات دەکرێت. لە ناوچەی en-US، ئەمە 5ی ئازاری 2026، کاتژمێر 3:00:00ی پاشنیوەڕۆ بە کاتی ناوەندی ئەمریکا. بەڵام ئەگەر بەکارهێنەرەکە لە لەندەن بێت، بۆ نموونە، کاتەکانی ڕووداوەکان بەم شێوەیە فۆرمات دەکرێت 5 Mar 2026, 15:00:00 GMT-5. پوختەیەک

کردار Moment.js کاتی کاتی ئێستا moment() کاتی.ئێستا.ناوچەکراوبەرواریکاتISO() پارسکردنی ISO سات(ستر) کاتی.چرکە.لە(str) کات زیاد بکە .add(7, 'ڕۆژەکان') (گۆڕانکاری) .add({ ڕۆژ: 7 }) (شتێکی نوێ) جیاوازی .diff(ئەوەی تر، 'کاتژمێر') .لەکاتی(کاتەکانی تر). ناوچەی کاتیی .tz('ناوچە/ناو') .withTimeZone('ناوچە/ناو')

لە یەکەم نیگادا، جیاوازییەکە ڕەنگە کەمێک جیاواز بێت (و لە حاڵەتی Temporal، هەندێکجار زیاتر قسەکردن و توندتر) ڕستەسازی، بەڵام چەندین سوودی سەرەکی هەیە بۆ بەکارهێنانی Temporal لە Moment.js:

ڕوونتر بوون بە واتای کەمتر سوپرایز و هەڵەی نەخوازراو دێت. ڕەنگە ساتەکە نەرمتر دەرکەوێت، بەڵام "پێشبینی" لەخۆدەگرێت، کە هەندێکجار دەتوانێت ببێتە هۆی بەرواری هەڵە. ئەگەر شتێکی نادروستت بە Temporal دا، ئەوا هەڵەیەک فڕێ دەدات. ئەگەر کۆدەکە کار بکات، دەزانیت کە بەروارێکی دروستت هەیە. Moment دەتوانێت قەبارەیەکی بەرچاو بۆ باندڵی بەرنامەکە زیاد بکات، بە تایبەتی ئەگەر پاکێجی moment-timezone بەکاربهێنیت. Temporal هیچ زیاد ناکات (کاتێک لە وێبگەڕە ئامانجدارەکانتدا دەنێردرێت). نەگۆڕان متمانەت پێدەبەخشێت کە هەرگیز داتاکان لەدەست نادەیت یان نایاننووسیتەوە لەکاتی ئەنجامدانی گۆڕینی بەروار و کارەکان. نوێنەرایەتی جیاوازی کات (Instant, PlainDateTime, ZonedDateTime) بەپێی پێداویستییەکانتان، کە Moment هەمیشە پێچەرێکە لە دەوری مۆری کاتی UTC. Temporal Intl APIs بەکاردەهێنێت بۆ فۆرماتکردنی بەروار، ئەمەش واتە دەتوانیت فۆرماتکردنی ئاگاداری ناوچەیی هەبێت بەبێ ئەوەی پێویست بکات بە ڕوونی تۆکنەکان دیاری بکەیت.

تێبینی لەسەر پۆلیفیڵ وەک پێشتر باسمان کرد، Temporal polyfill بەردەستە، کە وەک پاکێجێکی npm دابەشکراوە بە ناوی @js-temporal/polyfill. ئەگەر دەتەوێت ئەمڕۆ Temporal بەکاربهێنیت، پێویستت بەم polyfill دەبێت بۆ پشتگیریکردنی وێبگەڕەکانی وەک Safari کە هێشتا API یان نەناردووە. هەواڵە خراپەکە لەگەڵ ئەمەدا ئەوەیە کە قەبارەی باندڵەکەت زیاد دەکات. هەواڵە خۆشەکە ئەوەیە کە هێشتا بە شێوەیەکی بەرچاو کەمتر لە سات یان ناوچەی کاتیی سات زیاد دەکات. لێرەدا بەراوردێک لە قەبارەی باندڵەکان وەک لەلایەن Bundlephobia.com ڕاپۆرت کراوە، ماڵپەڕێک کە زانیاری لەسەر قەبارەی پاکێجی npm دەخاتە ڕوو (بۆ بینینی شیکاری Bundlephobia کلیک لەسەر هەر ناوی پاکێجێک بکە):

پاکێج بچووککراوە بچووککراوە و gzipped @js-کاتی/پۆلیفیڵ 154.1 کیلۆبایت 44.1 کیلۆبایت ساتێک 294.4 کیلۆبایت 75.4 کیلۆبایت ناوچەی کاتیی سات 1 مێگابایت 114.2 کیلۆبایت

هەروەها پۆلیفیڵ لە مێژوودا هەندێک کێشەی کارایی هەبووە لە دەوری بەکارهێنانی بیرگە، و لە کاتی نووسینەکەدا، بە دۆخی ئەلفا دادەنرێت. بەهۆی ئەمەوە ڕەنگە نەتەوێت لە بەرهەمهێناندا بەکاری بهێنیت تا دەگاتە حاڵەتێکی پێگەیشتووتر. هەواڵە خۆشەکەی تر ئەوەیە کە هیوادارین پۆلیفیڵ زۆر زیاتر پێویست نەبێت (مەگەر پێویستت بە پشتگیریکردنی وێبگەڕە کۆنەکان نەبێت، بێگومان). لە کاتی نووسینی ئەم هەواڵەدا، Temporal بە کرۆم و ئێدج و فایەرفۆکس ناردووە. هێشتا لە سەفاریدا تەواو ئامادە نییە، هەرچەندە پێدەچێت بە ئاڵای کاتی جێبەجێکردنەوە لە نوێترین پێشبینی تەکنەلۆژیادا بەردەست بێت.

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