[{"data":1,"prerenderedAt":347},["ShallowReactive",2],{"CLJ2zbSmao":3},[4],{"id":5,"date":6,"date_gmt":7,"guid":8,"modified":10,"modified_gmt":11,"slug":12,"status":13,"type":14,"link":15,"title":16,"content":18,"excerpt":21,"author":23,"featured_media":24,"comment_status":25,"ping_status":25,"sticky":20,"template":26,"format":27,"meta":28,"categories":29,"tags":31,"class_list":32,"acf":40,"yoast_head":41,"yoast_head_json":42,"featured_media_src_url":138,"_links":139,"_embedded":186},1486,"2025-04-06T16:16:50","2025-04-06T13:16:50",{"rendered":9},"https://api.aoskin.ru/?p=1486","2025-07-25T21:58:55","2025-07-25T18:58:55","temporal-api-a-new-era-of-date-handling-in-javascript","publish","post","https://api.aoskin.ru/en/temporal-api-a-new-era-of-date-handling-in-javascript/",{"rendered":17},"Temporal API &#8211; A New Era of Date Handling in JavaScript",{"rendered":19,"protected":20},"\n\u003Cp>With the release of the new ECMAScript standard, JavaScript has a solution designed to simplify working with dates and time &#8211; the Temporal API.\u003C/p>\n\n\n\n\u003Ch2 class=\"wp-block-heading\">What is Temporal?\u003C/h2>\n\n\n\n\u003Cp>Temporal is a new API that was designed to replace the deprecated Date. It provides a more modern, accurate, and convenient way to work with dates, times, and durations. Temporal was introduced in \u003Cstrong>Stage 3\u003C/strong> of the ECMAScript 2022 standard and will become part of the official JavaScript specification.\u003C/p>\n\n\n\n\u003Ch2 class=\"wp-block-heading\">Key features of Temporal:\u003C/h2>\n\n\n\n\u003Cp>\u003Cstrong>Clean and precise date handling:\u003C/strong> Temporal eliminates many of Date&#8217;s shortcomings, such as incorrect handling of time zones, ambiguities in interval calculations, and rounding.\u003C/p>\n\n\n\n\u003Cp>\u003Cstrong>Time and date as objects:\u003C/strong> Instead of a single object that could be represented as a number (milliseconds) since January 1, 1970 UTC+0, Temporal introduces several types, each of which solves a specific problem:\u003C/p>\n\n\n\n\u003Cul class=\"wp-block-list\">\n\u003Cli>\u003Cstrong>Temporal.Date\u003C/strong> &#8211; for working with dates without time.\u003C/li>\n\n\n\n\u003Cli>\u003Cstrong>Temporal.Time\u003C/strong> &#8211; for working with time without date.\u003C/li>\n\n\n\n\u003Cli>\u003Cstrong>Temporal.DateTime\u003C/strong> &#8211; for working with full timestamps (date and time).\u003C/li>\n\n\n\n\u003Cli>\u003Cstrong>Temporal.Duration\u003C/strong> &#8211; for working with duration.\u003C/li>\n\n\n\n\u003Cli>\u003Cstrong>Temporal.Instant\u003C/strong> &#8211; for working with moments in time based on milliseconds since January 1, 1970 UTC+0.\u003C/li>\n\n\n\n\u003Cli>\u003Cstrong>Temporal.Calenda\u003C/strong>r &#8211; allows you to define custom calendars.\u003C/li>\n\u003C/ul>\n\n\n\n\u003Cp>\u003Cstrong>Time Zones and Offsets:\u003C/strong> Temporal allows you to easily manage time zones without having to manually account for the differences between them. There is also the ability to work with Temporal.TimeZone, which helps you understand the time difference between different points.\u003C/p>\n\n\n\n\u003Cp>\u003Cstrong>Immutability:\u003C/strong> Unlike the Date object, Temporal objects are immutable. Each method returns a new instance without changing the original object. This helps avoid errors related to changes in the state of objects.\u003C/p>\n\n\n\n\u003Ch2 class=\"wp-block-heading\">\u003Ccode>Temporal.Date\u003C/code>\u003C/h2>\n\n\n\n\u003Cp>\u003Ccode>Temporal.Date\u003C/code> is part of the new Temporal API, which is an immutable date object that makes it easy to create, manipulate, and compare dates without the pain of the legacy Date object\u003C/p>\n\n\n\n\u003Cp>1.\u003Cstrong> Create a date\u003C/strong>\u003C/p>\n\n\n\n\u003Cp>To create a date, use new \u003Ccode>\u003Cstrong>Temporal.PlainDate()\u003C/strong>\u003C/code>:\u003C/p>\n\n\n\n\u003Cdiv class=\"hcb_wrap\">\u003Cpre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\">\u003Ccode>const date = new Temporal.PlainDate(2025, 3, 23);\nconsole.log(date.toString()); // 2025-03-23\u003C/code>\u003C/pre>\u003C/div>\n\n\n\n\u003Cp>You can also create a date by calling the \u003Ccode>\u003Cstrong>.from()\u003C/strong>\u003C/code> method and passing a string or object:\u003C/p>\n\n\n\n\u003Cdiv class=\"hcb_wrap\">\u003Cpre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\">\u003Ccode>const now = Temporal.PlainDate.from(&#39;2025-03-23&#39;);\nconsole.log(now.toString()); // 2025-03-23\n\nconst nowObj = Temporal.PlainDate.from({\n  year: 2025,\n  month: 3,\n  day: 23,\n});\n\nconsole.log(nowObj.toString()); // 2025-03-23\u003C/code>\u003C/pre>\u003C/div>\n\n\n\n\u003Cp>2.\u003Cstrong> Getting the current date\u003C/strong>\u003C/p>\n\n\n\n\u003Cp>To get the current date, use the \u003Ccode>\u003Cstrong>.Now.plainDateISO()\u003C/strong>\u003C/code> method of the Temporal object:\u003C/p>\n\n\n\n\u003Cdiv class=\"hcb_wrap\">\u003Cpre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\">\u003Ccode>const today = Temporal.Now.plainDateISO();\nconsole.log(today.toString()); // 2025-03-23 ISO\u003C/code>\u003C/pre>\u003C/div>\n\n\n\n\u003Cp>Current date and time in a specific time zone\u003C/p>\n\n\n\n\u003Cdiv class=\"hcb_wrap\">\u003Cpre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\">\u003Ccode>const zonedDateTime = Temporal.Now.zonedDateTimeISO(&#39;Europe/Moscow&#39;);\nconsole.log(zonedDateTime.toString()); // 2025-03-23T15:41:26.953086951+03:00[Europe/Moscow]\u003C/code>\u003C/pre>\u003C/div>\n\n\n\n\u003Cp>3.&nbsp;\u003Cstrong>Adding and subtracting time\u003C/strong>\u003C/p>\n\n\n\n\u003Cp>To add a date value, use the \u003Cstrong>\u003Ccode>.add()\u003C/code>\u003C/strong> method, where we specify what we want to add, for example, add +1 day to the current date. To subtract a date value, use the \u003Ccode>\u003Cstrong>.subtract()\u003C/strong>\u003C/code> method, for example -1 month from the current date:\u003C/p>\n\n\n\n\u003Cdiv class=\"hcb_wrap\">\u003Cpre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\">\u003Ccode>const today = Temporal.Now.plainDateISO();\nconst tomorrow = today.add({ days: 1 }); // add 1 day\nconsole.log(tomorrow.toString()); // 2025-03-24\n\nconst prevMonth = today.subtract({ months: 1 }); // subtract 1 month\nconsole.log(prevMonth.toString()); // 2025-02-23\u003C/code>\u003C/pre>\u003C/div>\n\n\n\n\u003Cp>4.&nbsp;\u003Cstrong>Comparison of dates\u003C/strong>\u003C/p>\n\n\n\n\u003Cp>To compare two dates, use the \u003Cstrong>\u003Ccode>.equals()\u003C/code>\u003C/strong> method. To get the difference between dates, use the \u003Cstrong>\u003Ccode>.since()\u003C/code>\u003C/strong> method or the \u003Ccode>\u003Cstrong>.until()\u003C/strong>\u003C/code> method:\u003C/p>\n\n\n\n\u003Cdiv class=\"hcb_wrap\">\u003Cpre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\">\u003Ccode>const date1 = new Temporal.PlainDate(2025, 3, 25);\nconst date2 = new Temporal.PlainDate(2025, 3, 26);\n\nconsole.log(date1.equals(date2)); // false\nconsole.log(date1.since(date2).toString()); // -P1D (date1 1 day earlier date2)\nconsole.log(date1.until(date2).toString()); // P1D (date2 1 day later date1)\u003C/code>\u003C/pre>\u003C/div>\n\n\n\n\u003Cp>5.&nbsp;\u003Cstrong>Extracting date components\u003C/strong>\u003C/p>\n\n\n\n\u003Cdiv class=\"hcb_wrap\">\u003Cpre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\">\u003Ccode>const today = Temporal.Now.plainDateISO();\nconsole.log(today.year); // 2025\nconsole.log(today.month); // 3\nconsole.log(today.day); // 23\u003C/code>\u003C/pre>\u003C/div>\n\n\n\n\u003Ch2 class=\"wp-block-heading\">\u003Ccode>\u003Ccode>Temporal.Time\u003C/code>\u003C/code>\u003C/h2>\n\n\n\n\u003Cp>1.&nbsp;\u003Cstrong>Creation of time\u003C/strong>\u003C/p>\n\n\n\n\u003Cp>To create a date, use \u003Cstrong>\u003Ccode>new Temporal.PlainTime()\u003C/code>\u003C/strong>:\u003C/p>\n\n\n\n\u003Cdiv class=\"hcb_wrap\">\u003Cpre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\">\u003Ccode>const time = new Temporal.PlainTime(14, 30, 0);\nconsole.log(time.toString()); // 14:30:00\u003C/code>\u003C/pre>\u003C/div>\n\n\n\n\u003Cp>2.&nbsp;\u003Cstrong>Getting the current time\u003C/strong>\u003C/p>\n\n\n\n\u003Cp>To get the current date, use the \u003Cstrong>\u003Ccode>.Now.plainTimeISO()\u003C/code>\u003C/strong> method of the \u003Ccode>Temporal\u003C/code> object:\u003C/p>\n\n\n\n\u003Cdiv class=\"hcb_wrap\">\u003Cpre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\">\u003Ccode>const now = Temporal.Now.plainTimeISO();\nconsole.log(now.toString()); // 16:05:01.45370145\u003C/code>\u003C/pre>\u003C/div>\n\n\n\n\u003Cp>3.&nbsp;\u003Cstrong>Adding and subtracting time\u003C/strong>\u003C/p>\n\n\n\n\u003Cp>To add a time value, use the \u003Cstrong>\u003Ccode>.add()\u003C/code>\u003C/strong> method, where we specify what we want to add, for example, add +2 hours to the created or current time. To subtract a date value, use the \u003Cstrong>\u003Ccode>.subtract()\u003C/code>\u003C/strong> method, for example -30 minutes from the created or current time:\u003C/p>\n\n\n\n\u003Cdiv class=\"hcb_wrap\">\u003Cpre class=\"prism line-numbers lang-plain\">\u003Ccode>const time = new Temporal.PlainTime(14, 30, 0);\nconst later = time.add({ hours: 2 }); // +2 hours\nconsole.log(later.toString()); // 16:30:00\n\nconst minusTime = time.subtract({ minutes: 30 }); // -30 minutes\nconsole.log(minusTime.toString()); // 14:00:00\u003C/code>\u003C/pre>\u003C/div>\n\n\n\n\u003Cp>4.&nbsp;\u003Cstrong>Time comparison\u003C/strong>\u003C/p>\n\n\n\n\u003Cp>To compare two time values, use the \u003Cstrong>\u003Ccode>.equals()\u003C/code>\u003C/strong> method. To get the difference between times, use the \u003Cstrong>\u003Ccode>.since()\u003C/code>\u003C/strong> method or the \u003Cstrong>\u003Ccode>.until()\u003C/code>\u003C/strong> method:\u003C/p>\n\n\n\n\u003Cdiv class=\"hcb_wrap\">\u003Cpre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\">\u003Ccode>const time1 = new Temporal.PlainTime(14, 30, 0);\nconst time2 = new Temporal.PlainTime(15, 0, 0);\n\nconsole.log(time1.equals(time2)); // false\nconsole.log(time1.until(time2).toString()); // PT30M (30 minutes difference)\u003C/code>\u003C/pre>\u003C/div>\n\n\n\n\u003Cp>5.&nbsp;\u003Cstrong>Extracting Time Components\u003C/strong>\u003C/p>\n\n\n\n\u003Cdiv class=\"hcb_wrap\">\u003Cpre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\">\u003Ccode>const time = new Temporal.PlainTime(14, 30, 0);\nconsole.log(time.hour);   // 14\nconsole.log(time.minute); // 30\nconsole.log(time.second); // 0\u003C/code>\u003C/pre>\u003C/div>\n\n\n\n\u003Ch2 class=\"wp-block-heading\">\u003Ccode>Temporal.Duration\u003C/code>\u003C/h2>\n\n\n\n\u003Cp>\u003Ccode>Temporal.Duration\u003C/code> is an object that represents a time interval. It can store information about years, months, days, hours, minutes, seconds, and other units of time. This object is immutable, making it safe to use.\u003C/p>\n\n\n\n\u003Cp>1.&nbsp;\u003Cstrong>Creating an interval\u003C/strong>\u003C/p>\n\n\n\n\u003Cp>To create an interval, we use \u003Cstrong>\u003Ccode>new Temporal.Duration()\u003C/code>\u003C/strong>, where we specify the necessary values: for example &#8211; \u003Cstrong>\u003Ccode>new Temporal.Duration(1, 2, 3, 4, 5, 6, 7)\u003C/code>\u003C/strong>, here: 1Y &#8211; 1 year, 2M &#8211; 2 months, 3W &#8211; 3 weeks, 4D &#8211; 4 days, 5H &#8211; 5 hours, 6M &#8211; 6 minutes, 7S &#8211; 7 seconds:\u003C/p>\n\n\n\n\u003Cdiv class=\"hcb_wrap\">\u003Cpre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\">\u003Ccode>const duration = new Temporal.Duration(1, 2, 3, 4, 5, 6, 7);\nconsole.log(duration.toString()); // P1Y2M3W4DT5H6M7S\u003C/code>\u003C/pre>\u003C/div>\n\n\n\n\u003Cp>Or you can use the \u003Cstrong>\u003Ccode>.from\u003C/code>\u003C/strong> method by specifying the desired values ​​in the object:\u003C/p>\n\n\n\n\u003Cdiv class=\"hcb_wrap\">\u003Cpre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\">\u003Ccode>const duration = Temporal.Duration.from({ days: 5, months: 3 });\nconsole.log(duration.toString()); // P3M5D\u003C/code>\u003C/pre>\u003C/div>\n\n\n\n\u003Cp>2.&nbsp;\u003Cstrong>Adding an interval to a date\u003C/strong>\u003C/p>\n\n\n\n\u003Cdiv class=\"hcb_wrap\">\u003Cpre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\">\u003Ccode>const date = new Temporal.PlainDate(2025, 3, 23);\nconst newDate = date.add(new Temporal.Duration(0, 0, 1)); // Add 1 week\nconsole.log(newDate.toString()); // 2025-03-30\u003C/code>\u003C/pre>\u003C/div>\n\n\n\n\u003Cp>3.&nbsp;\u003Cstrong>\u003Cstrong>Duration in the desired value\u003C/strong>\u003C/strong>\u003C/p>\n\n\n\n\u003Cdiv class=\"hcb_wrap\">\u003Cpre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\">\u003Ccode>const secondsDuration = Temporal.Duration.from({ minutes: 2 });\nconsole.log(secondsDuration.total(&#39;seconds&#39;)); // 120\n\nconst minutesDuration = Temporal.Duration.from({ hours: 10 });\nconsole.log(minutesDuration.total(&#39;minutes&#39;)); // 600\n\nconst hoursDuration = Temporal.Duration.from({ days: 2 });\nconsole.log(hoursDuration.total(&#39;hours&#39;)); // 48\u003C/code>\u003C/pre>\u003C/div>\n\n\n\n\u003Cp>4.&nbsp;\u003Cstrong>Extracting interval components\u003C/strong>\u003C/p>\n\n\n\n\u003Cdiv class=\"hcb_wrap\">\u003Cpre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\">\u003Ccode>const duration = new Temporal.Duration(1, 2, 3, 4, 5, 6, 7);\nconsole.log(duration.years);   // 1\nconsole.log(duration.months);  // 2\nconsole.log(duration.weeks);   // 3\nconsole.log(duration.days);    // 4\nconsole.log(duration.hours);   // 5\nconsole.log(duration.minutes); // 6\nconsole.log(duration.seconds); // 7\u003C/code>\u003C/pre>\u003C/div>\n\n\n\n\u003Ch2 class=\"wp-block-heading\">Why is \u003Ccode>Temporal\u003C/code> important?\u003C/h2>\n\n\n\n\u003Cul class=\"wp-block-list\">\n\u003Cli>\u003Cstrong>Simplifying Date and Time Handling:\u003C/strong> The Temporal API addresses a number of issues around time accuracy and handling, improving code and reducing bugs.\u003C/li>\n\n\n\n\u003Cli>\u003Cstrong>Daylight Saving Time (DST) Handling:\u003C/strong> Temporal handles DST and time zone handling correctly.\u003C/li>\n\n\n\n\u003Cli>\u003Cstrong>Modern Standards:\u003C/strong> The API helps front-end and back-end developers leverage best practices and improved accuracy.\u003C/li>\n\u003C/ul>\n\n\n\n\u003Ch2 class=\"wp-block-heading\">How to start using the \u003Ccode>Temporal API\u003C/code>\u003C/h2>\n\n\n\n\u003Cp>Using a polyfill: Since Temporal is not yet supported by all browsers, you need to install the polyfill:\u003C/p>\n\n\n\n\u003Cdiv class=\"hcb_wrap\">\u003Cpre class=\"prism line-numbers lang-bash\" data-lang=\"Bash\">\u003Ccode>npm install @js-temporal/polyfill\u003C/code>\u003C/pre>\u003C/div>\n\n\n\n\u003Cp>\u003Cstrong>We import and use in our project:\u003C/strong>\u003C/p>\n\n\n\n\u003Cdiv class=\"hcb_wrap\">\u003Cpre class=\"prism line-numbers lang-bash\" data-lang=\"Bash\">\u003Ccode>import { Temporal } from &#39;@js-temporal/polyfill&#39;;\u003C/code>\u003C/pre>\u003C/div>\n\n\n\n\u003Ch2 class=\"wp-block-heading\">Conclusion\u003C/h2>\n\n\n\n\u003Cp>\u003Cstrong>Temporal\u003C/strong> is a step forward in standardizing and improving date and time handling in JavaScript. Implementing this API into your project will ensure reliability, accuracy, and simplification of working with time data. It solves problems that have long been associated with the use of \u003Cstrong>\u003Ccode>Date\u003C/code>\u003C/strong> and provides a more powerful tool for developers. The API also includes helper methods: \u003Ccode>with\u003C/code>, \u003Ccode>add\u003C/code>, \u003Ccode>subtract\u003C/code>, \u003Ccode>since\u003C/code>, and \u003Ccode>until\u003C/code>, making date manipulation simple and reliable.\u003C/p>\n",false,{"rendered":22,"protected":20},"\u003Cp>Working with dates and times in JavaScript has always been a tricky business. Built-in Date objects and their manipulations sometimes lead to unexpected results, especially when it comes to time zones, daylight saving time transitions, and precision.\u003C/p>\n",1,1540,"open","","standard",{"_acf_changed":20,"footnotes":26},[30],60,[],[33,14,34,35,36,37,38,39],"post-1486","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-javascript-en",[],"\u003C!-- This site is optimized with the Yoast SEO plugin v26.6 - https://yoast.com/wordpress/plugins/seo/ -->\n\u003Ctitle>Temporal API - A New Era of Date Handling in JavaScript\u003C/title>\n\u003Cmeta name=\"description\" content=\"- In the ECMAScript standard, JavaScript has a solution that is designed to simplify working with dates and times - this is the Temporal API.\" class=\"yoast-seo-meta-tag\" />\n\u003Cmeta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" />\n\u003Clink rel=\"canonical\" href=\"https://api.aoskin.ru/en/temporal-api-a-new-era-of-date-handling-in-javascript/\" class=\"yoast-seo-meta-tag\" />\n\u003Cmeta property=\"og:locale\" content=\"en_US\" class=\"yoast-seo-meta-tag\" />\n\u003Cmeta property=\"og:type\" content=\"article\" class=\"yoast-seo-meta-tag\" />\n\u003Cmeta property=\"og:title\" content=\"Temporal API - A New Era of Date Handling in JavaScript\" class=\"yoast-seo-meta-tag\" />\n\u003Cmeta property=\"og:description\" content=\"- In the ECMAScript standard, JavaScript has a solution that is designed to simplify working with dates and times - this is the Temporal API.\" class=\"yoast-seo-meta-tag\" />\n\u003Cmeta property=\"og:url\" content=\"https://api.aoskin.ru/en/temporal-api-a-new-era-of-date-handling-in-javascript/\" class=\"yoast-seo-meta-tag\" />\n\u003Cmeta property=\"og:site_name\" content=\"api.aoskin.ru\" class=\"yoast-seo-meta-tag\" />\n\u003Cmeta property=\"article:published_time\" content=\"2025-04-06T13:16:50+00:00\" class=\"yoast-seo-meta-tag\" />\n\u003Cmeta property=\"article:modified_time\" content=\"2025-07-25T18:58:55+00:00\" class=\"yoast-seo-meta-tag\" />\n\u003Cmeta property=\"og:image\" content=\"https://api.aoskin.ru/wp-content/uploads/2025/04/33-date-api-temporal.webp\" class=\"yoast-seo-meta-tag\" />\n\t\u003Cmeta property=\"og:image:width\" content=\"1456\" class=\"yoast-seo-meta-tag\" />\n\t\u003Cmeta property=\"og:image:height\" content=\"816\" class=\"yoast-seo-meta-tag\" />\n\t\u003Cmeta property=\"og:image:type\" content=\"image/webp\" class=\"yoast-seo-meta-tag\" />\n\u003Cmeta name=\"author\" content=\"aoskin\" class=\"yoast-seo-meta-tag\" />\n\u003Cmeta name=\"twitter:card\" content=\"summary_large_image\" class=\"yoast-seo-meta-tag\" />\n\u003Cmeta name=\"twitter:label1\" content=\"Written by\" class=\"yoast-seo-meta-tag\" />\n\t\u003Cmeta name=\"twitter:data1\" content=\"aoskin\" class=\"yoast-seo-meta-tag\" />\n\t\u003Cmeta name=\"twitter:label2\" content=\"Est. reading time\" class=\"yoast-seo-meta-tag\" />\n\t\u003Cmeta name=\"twitter:data2\" content=\"4 minutes\" class=\"yoast-seo-meta-tag\" />\n\u003Cscript type=\"application/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https://api.aoskin.ru/en/temporal-api-a-new-era-of-date-handling-in-javascript/#article\",\"isPartOf\":{\"@id\":\"https://api.aoskin.ru/en/temporal-api-a-new-era-of-date-handling-in-javascript/\"},\"author\":{\"name\":\"aoskin\",\"@id\":\"https://api.aoskin.ru/#/schema/person/b5e1c81c85a50ca05e16fcdfa29f4861\"},\"headline\":\"Temporal API &#8211; A New Era of Date Handling in JavaScript\",\"datePublished\":\"2025-04-06T13:16:50+00:00\",\"dateModified\":\"2025-07-25T18:58:55+00:00\",\"mainEntityOfPage\":{\"@id\":\"https://api.aoskin.ru/en/temporal-api-a-new-era-of-date-handling-in-javascript/\"},\"wordCount\":789,\"commentCount\":0,\"publisher\":{\"@id\":\"https://api.aoskin.ru/#/schema/person/b5e1c81c85a50ca05e16fcdfa29f4861\"},\"image\":{\"@id\":\"https://api.aoskin.ru/en/temporal-api-a-new-era-of-date-handling-in-javascript/#primaryimage\"},\"thumbnailUrl\":\"https://api.aoskin.ru/wp-content/uploads/2025/04/33-date-api-temporal.webp\",\"articleSection\":[\"JavaScript\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https://api.aoskin.ru/en/temporal-api-a-new-era-of-date-handling-in-javascript/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https://api.aoskin.ru/en/temporal-api-a-new-era-of-date-handling-in-javascript/\",\"url\":\"https://api.aoskin.ru/en/temporal-api-a-new-era-of-date-handling-in-javascript/\",\"name\":\"Temporal API - A New Era of Date Handling in JavaScript\",\"isPartOf\":{\"@id\":\"https://api.aoskin.ru/#website\"},\"primaryImageOfPage\":{\"@id\":\"https://api.aoskin.ru/en/temporal-api-a-new-era-of-date-handling-in-javascript/#primaryimage\"},\"image\":{\"@id\":\"https://api.aoskin.ru/en/temporal-api-a-new-era-of-date-handling-in-javascript/#primaryimage\"},\"thumbnailUrl\":\"https://api.aoskin.ru/wp-content/uploads/2025/04/33-date-api-temporal.webp\",\"datePublished\":\"2025-04-06T13:16:50+00:00\",\"dateModified\":\"2025-07-25T18:58:55+00:00\",\"description\":\"- In the ECMAScript standard, JavaScript has a solution that is designed to simplify working with dates and times - this is the Temporal API.\",\"breadcrumb\":{\"@id\":\"https://api.aoskin.ru/en/temporal-api-a-new-era-of-date-handling-in-javascript/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https://api.aoskin.ru/en/temporal-api-a-new-era-of-date-handling-in-javascript/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https://api.aoskin.ru/en/temporal-api-a-new-era-of-date-handling-in-javascript/#primaryimage\",\"url\":\"https://api.aoskin.ru/wp-content/uploads/2025/04/33-date-api-temporal.webp\",\"contentUrl\":\"https://api.aoskin.ru/wp-content/uploads/2025/04/33-date-api-temporal.webp\",\"width\":1456,\"height\":816},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://api.aoskin.ru/en/temporal-api-a-new-era-of-date-handling-in-javascript/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https://api.aoskin.ru/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Temporal API &#8211; A New Era of Date Handling in JavaScript\"}]},{\"@type\":\"WebSite\",\"@id\":\"https://api.aoskin.ru/#website\",\"url\":\"https://api.aoskin.ru/\",\"name\":\"aoskin.ru\",\"description\":\"\",\"publisher\":{\"@id\":\"https://api.aoskin.ru/#/schema/person/b5e1c81c85a50ca05e16fcdfa29f4861\"},\"alternateName\":\"aoskin.ru\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https://api.aoskin.ru/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https://api.aoskin.ru/#/schema/person/b5e1c81c85a50ca05e16fcdfa29f4861\",\"name\":\"aoskin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https://api.aoskin.ru/#/schema/person/image/\",\"url\":\"https://secure.gravatar.com/avatar/e5e502e32ef7d2bf805592a42dd48d98a3587a37b0e98191f187c9c37e7529fb?s=96&d=mm&r=g\",\"contentUrl\":\"https://secure.gravatar.com/avatar/e5e502e32ef7d2bf805592a42dd48d98a3587a37b0e98191f187c9c37e7529fb?s=96&d=mm&r=g\",\"caption\":\"aoskin\"},\"logo\":{\"@id\":\"https://api.aoskin.ru/#/schema/person/image/\"},\"sameAs\":[\"http://api.aoskin.ru\"],\"url\":\"https://api.aoskin.ru/author/aoskin/\"}]}\u003C/script>\n\u003C!-- / Yoast SEO plugin. -->",{"title":43,"description":44,"robots":45,"canonical":15,"og_locale":51,"og_type":52,"og_title":43,"og_description":44,"og_url":15,"og_site_name":53,"article_published_time":54,"article_modified_time":55,"og_image":56,"author":62,"twitter_card":63,"twitter_misc":64,"schema":66},"Temporal API - A New Era of Date Handling in JavaScript","- In the ECMAScript standard, JavaScript has a solution that is designed to simplify working with dates and times - this is the Temporal API.",{"index":46,"follow":47,"max-snippet":48,"max-image-preview":49,"max-video-preview":50},"index","follow","max-snippet:-1","max-image-preview:large","max-video-preview:-1","en_US","article","api.aoskin.ru","2025-04-06T13:16:50+00:00","2025-07-25T18:58:55+00:00",[57],{"width":58,"height":59,"url":60,"type":61},1456,816,"https://api.aoskin.ru/wp-content/uploads/2025/04/33-date-api-temporal.webp","image/webp","aoskin","summary_large_image",{"Written by":62,"Est. reading time":65},"4 minutes",{"@context":67,"@graph":68},"https://schema.org",[69,90,102,104,113,127],{"@type":70,"@id":71,"isPartOf":72,"author":73,"headline":17,"datePublished":54,"dateModified":55,"mainEntityOfPage":75,"wordCount":76,"commentCount":77,"publisher":78,"image":79,"thumbnailUrl":60,"articleSection":81,"inLanguage":83,"potentialAction":84},"Article","https://api.aoskin.ru/en/temporal-api-a-new-era-of-date-handling-in-javascript/#article",{"@id":15},{"name":62,"@id":74},"https://api.aoskin.ru/#/schema/person/b5e1c81c85a50ca05e16fcdfa29f4861",{"@id":15},789,0,{"@id":74},{"@id":80},"https://api.aoskin.ru/en/temporal-api-a-new-era-of-date-handling-in-javascript/#primaryimage",[82],"JavaScript","en-US",[85],{"@type":86,"name":87,"target":88},"CommentAction","Comment",[89],"https://api.aoskin.ru/en/temporal-api-a-new-era-of-date-handling-in-javascript/#respond",{"@type":91,"@id":15,"url":15,"name":43,"isPartOf":92,"primaryImageOfPage":94,"image":95,"thumbnailUrl":60,"datePublished":54,"dateModified":55,"description":44,"breadcrumb":96,"inLanguage":83,"potentialAction":98},"WebPage",{"@id":93},"https://api.aoskin.ru/#website",{"@id":80},{"@id":80},{"@id":97},"https://api.aoskin.ru/en/temporal-api-a-new-era-of-date-handling-in-javascript/#breadcrumb",[99],{"@type":100,"target":101},"ReadAction",[15],{"@type":103,"inLanguage":83,"@id":80,"url":60,"contentUrl":60,"width":58,"height":59},"ImageObject",{"@type":105,"@id":97,"itemListElement":106},"BreadcrumbList",[107,111],{"@type":108,"position":23,"name":109,"item":110},"ListItem","Home","https://api.aoskin.ru/",{"@type":108,"position":112,"name":17},2,{"@type":114,"@id":93,"url":110,"name":115,"description":26,"publisher":116,"alternateName":115,"potentialAction":117,"inLanguage":83},"WebSite","aoskin.ru",{"@id":74},[118],{"@type":119,"target":120,"query-input":123},"SearchAction",{"@type":121,"urlTemplate":122},"EntryPoint","https://api.aoskin.ru/?s={search_term_string}",{"@type":124,"valueRequired":125,"valueName":126},"PropertyValueSpecification",true,"search_term_string",{"@type":128,"@id":74,"name":62,"image":131,"logo":134,"sameAs":135,"url":137},[129,130],"Person","Organization",{"@type":103,"inLanguage":83,"@id":132,"url":133,"contentUrl":133,"caption":62},"https://api.aoskin.ru/#/schema/person/image/","https://secure.gravatar.com/avatar/e5e502e32ef7d2bf805592a42dd48d98a3587a37b0e98191f187c9c37e7529fb?s=96&d=mm&r=g",{"@id":132},[136],"http://api.aoskin.ru","https://api.aoskin.ru/author/aoskin/","https://api.aoskin.ru/wp-content/uploads/2025/04/33-date-api-temporal-1024x574.webp",{"self":140,"collection":150,"about":153,"author":156,"replies":159,"version-history":162,"predecessor-version":165,"wp:featuredmedia":169,"wp:attachment":172,"wp:term":175,"curies":182},[141],{"href":142,"targetHints":143},"https://api.aoskin.ru/wp-json/wp/v2/posts/1486",{"allow":144},[145,146,147,148,149],"GET","POST","PUT","PATCH","DELETE",[151],{"href":152},"https://api.aoskin.ru/wp-json/wp/v2/posts",[154],{"href":155},"https://api.aoskin.ru/wp-json/wp/v2/types/post",[157],{"embeddable":125,"href":158},"https://api.aoskin.ru/wp-json/wp/v2/users/1",[160],{"embeddable":125,"href":161},"https://api.aoskin.ru/wp-json/wp/v2/comments?post=1486",[163],{"count":112,"href":164},"https://api.aoskin.ru/wp-json/wp/v2/posts/1486/revisions",[166],{"id":167,"href":168},1634,"https://api.aoskin.ru/wp-json/wp/v2/posts/1486/revisions/1634",[170],{"embeddable":125,"href":171},"https://api.aoskin.ru/wp-json/wp/v2/media/1540",[173],{"href":174},"https://api.aoskin.ru/wp-json/wp/v2/media?parent=1486",[176,179],{"taxonomy":177,"embeddable":125,"href":178},"category","https://api.aoskin.ru/wp-json/wp/v2/categories?post=1486",{"taxonomy":180,"embeddable":125,"href":181},"post_tag","https://api.aoskin.ru/wp-json/wp/v2/tags?post=1486",[183],{"name":184,"href":185,"templated":125},"wp","https://api.w.org/{rel}",{"author":187,"wp:featuredmedia":236,"wp:term":297},[188],{"id":23,"name":62,"url":136,"description":26,"link":137,"slug":62,"avatar_urls":189,"yoast_head":192,"yoast_head_json":193,"acf":227,"_links":228},{"24":190,"48":191,"96":133},"https://secure.gravatar.com/avatar/e5e502e32ef7d2bf805592a42dd48d98a3587a37b0e98191f187c9c37e7529fb?s=24&d=mm&r=g","https://secure.gravatar.com/avatar/e5e502e32ef7d2bf805592a42dd48d98a3587a37b0e98191f187c9c37e7529fb?s=48&d=mm&r=g","\u003C!-- This site is optimized with the Yoast SEO plugin v26.6 - https://yoast.com/wordpress/plugins/seo/ -->\n\u003Ctitle>aoskin, Author at api.aoskin.ru\u003C/title>\n\u003C!-- Admin only notice: this page does not show a meta description because it does not have one, either write it for this page specifically or go into the [Yoast SEO - Settings] menu and set up a template. -->\n\u003Cmeta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" />\n\u003Clink rel=\"canonical\" href=\"https://api.aoskin.ru/author/aoskin/\" class=\"yoast-seo-meta-tag\" />\n\u003Cmeta property=\"og:locale\" content=\"en_US\" class=\"yoast-seo-meta-tag\" />\n\u003Cmeta property=\"og:type\" content=\"profile\" class=\"yoast-seo-meta-tag\" />\n\u003Cmeta property=\"og:title\" content=\"aoskin, Author at api.aoskin.ru\" class=\"yoast-seo-meta-tag\" />\n\u003Cmeta property=\"og:url\" content=\"https://api.aoskin.ru/author/aoskin/\" class=\"yoast-seo-meta-tag\" />\n\u003Cmeta property=\"og:site_name\" content=\"api.aoskin.ru\" class=\"yoast-seo-meta-tag\" />\n\u003Cmeta property=\"og:image\" content=\"https://secure.gravatar.com/avatar/2facb94fc7068b47efc88c943d1949fc?s=500&d=mm&r=g\" class=\"yoast-seo-meta-tag\" />\n\u003Cmeta name=\"twitter:card\" content=\"summary_large_image\" class=\"yoast-seo-meta-tag\" />\n\u003Cscript type=\"application/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"ProfilePage\",\"@id\":\"https://api.aoskin.ru/author/aoskin/\",\"url\":\"https://api.aoskin.ru/author/aoskin/\",\"name\":\"aoskin, Author at api.aoskin.ru\",\"isPartOf\":{\"@id\":\"https://api.aoskin.ru/#website\"},\"breadcrumb\":{\"@id\":\"https://api.aoskin.ru/author/aoskin/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https://api.aoskin.ru/author/aoskin/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://api.aoskin.ru/author/aoskin/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https://api.aoskin.ru/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Archives for aoskin\"}]},{\"@type\":\"WebSite\",\"@id\":\"https://api.aoskin.ru/#website\",\"url\":\"https://api.aoskin.ru/\",\"name\":\"aoskin.ru\",\"description\":\"\",\"publisher\":{\"@id\":\"https://api.aoskin.ru/#/schema/person/b5e1c81c85a50ca05e16fcdfa29f4861\"},\"alternateName\":\"aoskin.ru\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https://api.aoskin.ru/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https://api.aoskin.ru/#/schema/person/b5e1c81c85a50ca05e16fcdfa29f4861\",\"name\":\"aoskin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https://api.aoskin.ru/#/schema/person/image/\",\"url\":\"https://secure.gravatar.com/avatar/e5e502e32ef7d2bf805592a42dd48d98a3587a37b0e98191f187c9c37e7529fb?s=96&d=mm&r=g\",\"contentUrl\":\"https://secure.gravatar.com/avatar/e5e502e32ef7d2bf805592a42dd48d98a3587a37b0e98191f187c9c37e7529fb?s=96&d=mm&r=g\",\"caption\":\"aoskin\"},\"logo\":{\"@id\":\"https://api.aoskin.ru/#/schema/person/image/\"},\"sameAs\":[\"http://api.aoskin.ru\"],\"mainEntityOfPage\":{\"@id\":\"https://api.aoskin.ru/author/aoskin/\"}}]}\u003C/script>\n\u003C!-- / Yoast SEO plugin. -->",{"title":194,"robots":195,"canonical":137,"og_locale":51,"og_type":196,"og_title":194,"og_url":137,"og_site_name":53,"og_image":197,"twitter_card":63,"schema":200},"aoskin, Author at api.aoskin.ru",{"index":46,"follow":47,"max-snippet":48,"max-image-preview":49,"max-video-preview":50},"profile",[198],{"url":199,"type":26,"width":26,"height":26},"https://secure.gravatar.com/avatar/2facb94fc7068b47efc88c943d1949fc?s=500&d=mm&r=g",{"@context":67,"@graph":201},[202,210,215,221],{"@type":203,"@id":137,"url":137,"name":194,"isPartOf":204,"breadcrumb":205,"inLanguage":83,"potentialAction":207},"ProfilePage",{"@id":93},{"@id":206},"https://api.aoskin.ru/author/aoskin/#breadcrumb",[208],{"@type":100,"target":209},[137],{"@type":105,"@id":206,"itemListElement":211},[212,213],{"@type":108,"position":23,"name":109,"item":110},{"@type":108,"position":112,"name":214},"Archives for aoskin",{"@type":114,"@id":93,"url":110,"name":115,"description":26,"publisher":216,"alternateName":115,"potentialAction":217,"inLanguage":83},{"@id":74},[218],{"@type":119,"target":219,"query-input":220},{"@type":121,"urlTemplate":122},{"@type":124,"valueRequired":125,"valueName":126},{"@type":222,"@id":74,"name":62,"image":223,"logo":224,"sameAs":225,"mainEntityOfPage":226},[129,130],{"@type":103,"inLanguage":83,"@id":132,"url":133,"contentUrl":133,"caption":62},{"@id":132},[136],{"@id":137},[],{"self":229,"collection":233},[230],{"href":158,"targetHints":231},{"allow":232},[145,146,147,148,149],[234],{"href":235},"https://api.aoskin.ru/wp-json/wp/v2/users",[237],{"id":24,"date":238,"slug":239,"type":240,"link":241,"title":242,"author":23,"featured_media":77,"acf":243,"caption":244,"alt_text":26,"media_type":245,"mime_type":61,"media_details":246,"source_url":60,"_links":277},"2025-05-09T15:23:41","33-date-api-temporal","attachment","https://api.aoskin.ru/en/temporal-api-a-new-era-of-date-handling-in-javascript/33-date-api-temporal/",{"rendered":239},[],{"rendered":26},"image",{"width":58,"height":59,"file":247,"filesize":248,"sizes":249,"image_meta":274},"2025/04/33-date-api-temporal.webp",207718,{"medium":250,"large":256,"thumbnail":261,"medium_large":266,"full":272},{"file":251,"width":252,"height":253,"filesize":254,"mime_type":61,"source_url":255},"33-date-api-temporal-300x168.webp",300,168,17332,"https://api.aoskin.ru/wp-content/uploads/2025/04/33-date-api-temporal-300x168.webp",{"file":257,"width":258,"height":259,"filesize":260,"mime_type":61,"source_url":138},"33-date-api-temporal-1024x574.webp",1024,574,149802,{"file":262,"width":263,"height":263,"filesize":264,"mime_type":61,"source_url":265},"33-date-api-temporal-150x150.webp",150,9130,"https://api.aoskin.ru/wp-content/uploads/2025/04/33-date-api-temporal-150x150.webp",{"file":267,"width":268,"height":269,"filesize":270,"mime_type":61,"source_url":271},"33-date-api-temporal-768x430.webp",768,430,92538,"https://api.aoskin.ru/wp-content/uploads/2025/04/33-date-api-temporal-768x430.webp",{"file":273,"width":58,"height":59,"mime_type":61,"source_url":60},"33-date-api-temporal.webp",{"aperture":275,"credit":26,"camera":26,"caption":26,"created_timestamp":275,"copyright":26,"focal_length":275,"iso":275,"shutter_speed":275,"title":26,"orientation":275,"keywords":276},"0",[],{"self":278,"collection":282,"about":285,"author":288,"replies":290,"wp:attached-to":293,"curies":295},[279],{"href":171,"targetHints":280},{"allow":281},[145,146,147,148,149],[283],{"href":284},"https://api.aoskin.ru/wp-json/wp/v2/media",[286],{"href":287},"https://api.aoskin.ru/wp-json/wp/v2/types/attachment",[289],{"embeddable":125,"href":158},[291],{"embeddable":125,"href":292},"https://api.aoskin.ru/wp-json/wp/v2/comments?post=1540",[294],{"embeddable":125,"post_type":14,"id":5,"href":142},[296],{"name":184,"href":185,"templated":125},[298,346],[299],{"id":30,"link":300,"name":82,"slug":301,"taxonomy":177,"yoast_head":302,"yoast_head_json":303,"acf":328,"_links":329},"https://api.aoskin.ru/en/category/javascript-en/","javascript-en","\u003C!-- This site is optimized with the Yoast SEO plugin v26.6 - https://yoast.com/wordpress/plugins/seo/ -->\n\u003Ctitle>JavaScript Archives - api.aoskin.ru\u003C/title>\n\u003C!-- Admin only notice: this page does not show a meta description because it does not have one, either write it for this page specifically or go into the [Yoast SEO - Settings] menu and set up a template. -->\n\u003Cmeta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" />\n\u003Clink rel=\"canonical\" href=\"https://api.aoskin.ru/en/category/javascript-en/\" class=\"yoast-seo-meta-tag\" />\n\u003Cmeta property=\"og:locale\" content=\"en_US\" class=\"yoast-seo-meta-tag\" />\n\u003Cmeta property=\"og:type\" content=\"article\" class=\"yoast-seo-meta-tag\" />\n\u003Cmeta property=\"og:title\" content=\"JavaScript Archives - api.aoskin.ru\" class=\"yoast-seo-meta-tag\" />\n\u003Cmeta property=\"og:url\" content=\"https://api.aoskin.ru/en/category/javascript-en/\" class=\"yoast-seo-meta-tag\" />\n\u003Cmeta property=\"og:site_name\" content=\"api.aoskin.ru\" class=\"yoast-seo-meta-tag\" />\n\u003Cmeta name=\"twitter:card\" content=\"summary_large_image\" class=\"yoast-seo-meta-tag\" />\n\u003Cscript type=\"application/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"CollectionPage\",\"@id\":\"https://api.aoskin.ru/en/category/javascript-en/\",\"url\":\"https://api.aoskin.ru/en/category/javascript-en/\",\"name\":\"JavaScript Archives - api.aoskin.ru\",\"isPartOf\":{\"@id\":\"https://api.aoskin.ru/#website\"},\"breadcrumb\":{\"@id\":\"https://api.aoskin.ru/en/category/javascript-en/#breadcrumb\"},\"inLanguage\":\"en-US\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://api.aoskin.ru/en/category/javascript-en/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https://api.aoskin.ru/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JavaScript\"}]},{\"@type\":\"WebSite\",\"@id\":\"https://api.aoskin.ru/#website\",\"url\":\"https://api.aoskin.ru/\",\"name\":\"aoskin.ru\",\"description\":\"\",\"publisher\":{\"@id\":\"https://api.aoskin.ru/#/schema/person/b5e1c81c85a50ca05e16fcdfa29f4861\"},\"alternateName\":\"aoskin.ru\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https://api.aoskin.ru/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https://api.aoskin.ru/#/schema/person/b5e1c81c85a50ca05e16fcdfa29f4861\",\"name\":\"aoskin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https://api.aoskin.ru/#/schema/person/image/\",\"url\":\"https://api.aoskin.ru/wp-content/uploads/2025/04/33-date-api-temporal.webp\",\"contentUrl\":\"https://api.aoskin.ru/wp-content/uploads/2025/04/33-date-api-temporal.webp\",\"width\":1456,\"height\":816,\"caption\":\"aoskin\"},\"logo\":{\"@id\":\"https://api.aoskin.ru/#/schema/person/image/\"},\"sameAs\":[\"http://api.aoskin.ru\"]}]}\u003C/script>\n\u003C!-- / Yoast SEO plugin. -->",{"title":304,"robots":305,"canonical":300,"og_locale":51,"og_type":52,"og_title":304,"og_url":300,"og_site_name":53,"twitter_card":63,"schema":306},"JavaScript Archives - api.aoskin.ru",{"index":46,"follow":47,"max-snippet":48,"max-image-preview":49,"max-video-preview":50},{"@context":67,"@graph":307},[308,313,317,323],{"@type":309,"@id":300,"url":300,"name":304,"isPartOf":310,"breadcrumb":311,"inLanguage":83},"CollectionPage",{"@id":93},{"@id":312},"https://api.aoskin.ru/en/category/javascript-en/#breadcrumb",{"@type":105,"@id":312,"itemListElement":314},[315,316],{"@type":108,"position":23,"name":109,"item":110},{"@type":108,"position":112,"name":82},{"@type":114,"@id":93,"url":110,"name":115,"description":26,"publisher":318,"alternateName":115,"potentialAction":319,"inLanguage":83},{"@id":74},[320],{"@type":119,"target":321,"query-input":322},{"@type":121,"urlTemplate":122},{"@type":124,"valueRequired":125,"valueName":126},{"@type":324,"@id":74,"name":62,"image":325,"logo":326,"sameAs":327},[129,130],{"@type":103,"inLanguage":83,"@id":132,"url":60,"contentUrl":60,"width":58,"height":59,"caption":62},{"@id":132},[136],[],{"self":330,"collection":335,"about":338,"wp:post_type":341,"curies":344},[331],{"href":332,"targetHints":333},"https://api.aoskin.ru/wp-json/wp/v2/categories/60",{"allow":334},[145,146,147,148,149],[336],{"href":337},"https://api.aoskin.ru/wp-json/wp/v2/categories",[339],{"href":340},"https://api.aoskin.ru/wp-json/wp/v2/taxonomies/category",[342],{"href":343},"https://api.aoskin.ru/wp-json/wp/v2/posts?categories=60",[345],{"name":184,"href":185,"templated":125},[],1766752310944]