{"id":31088,"date":"2025-10-05T15:41:00","date_gmt":"2025-10-05T12:41:00","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=31088"},"modified":"2025-10-05T15:41:00","modified_gmt":"2025-10-05T12:41:00","slug":"date-fnse-hizli-bir-bakis-basit-bir-javascript-tarih-kutuphanesi","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/date-fnse-hizli-bir-bakis-basit-bir-javascript-tarih-kutuphanesi\/","title":{"rendered":"date-fns&#8217;e H\u0131zl\u0131 Bir Bak\u0131\u015f: Basit Bir JavaScript Tarih K\u00fct\u00fcphanesi"},"content":{"rendered":"<p><body><\/p>\n<h2>date-fns&#8217;e H\u0131zl\u0131 Bir Bak\u0131\u015f: Basit Bir JavaScript Tarih K\u00fct\u00fcphanesi<\/h2>\n<p>JavaScript, web geli\u015ftirmenin temel ta\u015flar\u0131ndan biridir ve modern uygulamalar\u0131n b\u00fcy\u00fck bir \u00e7o\u011funlu\u011funda kullan\u0131l\u0131r. Ancak JavaScript&#8217;in yerle\u015fik <code>Date<\/code> nesnesi, tarih ve saat i\u015flemleri konusunda geli\u015ftiricilere yeterince esneklik ve kolayl\u0131k sunmaz. Tarihlerin bi\u00e7imlendirilmesi, kar\u015f\u0131la\u015ft\u0131r\u0131lmas\u0131, manip\u00fclasyonu veya farkl\u0131 zaman dilimleriyle \u00e7al\u0131\u015fmak gibi yayg\u0131n g\u00f6revler, <code>Date<\/code> nesnesiyle do\u011frudan u\u011fra\u015f\u0131rken karma\u015f\u0131k ve hataya a\u00e7\u0131k hale gelebilir. Bu durum, Moment.js gibi pop\u00fcler k\u00fct\u00fcphanelerin ortaya \u00e7\u0131kmas\u0131na neden olmu\u015ftur. Ancak Moment.js&#8217;in boyut ve de\u011fi\u015ftirilebilirlik (mutability) sorunlar\u0131, daha modern ve hafif alternatiflerin aranmas\u0131na yol a\u00e7m\u0131\u015ft\u0131r. \u0130\u015fte tam bu noktada, <code>date-fns<\/code> devreye girer.<\/p>\n<p><code>date-fns<\/code>, modern JavaScript uygulamalar\u0131 i\u00e7in tasarlanm\u0131\u015f, kapsaml\u0131 ama hafif bir tarih yard\u0131mc\u0131 k\u00fct\u00fcphanesidir. Fonksiyonel programlama prensiplerini benimseyen, de\u011fi\u015ftirilemez (immutable) ve mod\u00fcler yap\u0131s\u0131yla \u00f6ne \u00e7\u0131kar. Bu makalede, <code>date-fns<\/code>&#8216;in temel \u00f6zelliklerine, kullan\u0131m\u0131na ve onu di\u011fer k\u00fct\u00fcphanelerden ay\u0131ran \u00f6nemli noktalara derinlemesine bir bak\u0131\u015f ataca\u011f\u0131z. Amac\u0131m\u0131z, geli\u015ftiricilere <code>date-fns<\/code>&#8216;in g\u00fcc\u00fcn\u00fc ve sadeli\u011fini g\u00f6stererek, tarih ve saat i\u015flemlerini ne kadar kolayla\u015ft\u0131rabilece\u011fini anlatmakt\u0131r.<\/p>\n<h3>date-fns Neden Gereklidir? JavaScript&#8217;in Date Nesnesiyle M\u00fccadele<\/h3>\n<p>JavaScript&#8217;in <code>Date<\/code> nesnesi, temel tarih ve saat i\u015flemlerini ger\u00e7ekle\u015ftirmek i\u00e7in yeterli olsa da, ger\u00e7ek d\u00fcnya uygulamalar\u0131nda kar\u015f\u0131la\u015f\u0131lan karma\u015f\u0131k senaryolarda yetersiz kal\u0131r. \u00d6rne\u011fin, bir tarihi belirli bir formata g\u00f6re bi\u00e7imlendirmek, iki tarih aras\u0131ndaki fark\u0131 bulmak, bir tarihe g\u00fcn, ay veya y\u0131l eklemek\/\u00e7\u0131karmak gibi i\u015flemler, <code>Date<\/code> nesnesinin metodlar\u0131yla do\u011frudan yap\u0131lamaz veya \u00e7ok uzun ve okunaks\u0131z kodlar gerektirir.<\/p>\n<p><code>new Date()<\/code> ile olu\u015fturulan bir tarih nesnesine <code>setMonth()<\/code> gibi metotlar uyguland\u0131\u011f\u0131nda, orijinal nesne \u00fczerinde de\u011fi\u015fiklik yap\u0131l\u0131r (mutable). Bu durum, \u00f6zellikle b\u00fcy\u00fck projelerde veya e\u015fzamanl\u0131 i\u015flemlerde beklenmedik yan etkilere ve hatalara yol a\u00e7abilir. Ayr\u0131ca, <code>Date<\/code> nesnesinin farkl\u0131 taray\u0131c\u0131larda veya Node.js ortamlar\u0131nda farkl\u0131 davran\u0131\u015flar sergileyebilmesi, geli\u015ftiriciler i\u00e7in ba\u015fka bir ba\u015f a\u011fr\u0131s\u0131 kayna\u011f\u0131d\u0131r.<\/p>\n<p>Moment.js gibi k\u00fct\u00fcphaneler bu sorunlara \u00e7\u00f6z\u00fcm sunmu\u015f olsa da, genellikle b\u00fcy\u00fck bir boyutla gelirler ve kullan\u0131lmayan bir\u00e7ok fonksiyonu da pakete dahil ederler. Bu durum, \u00f6zellikle mobil cihazlar veya d\u00fc\u015f\u00fck bant geni\u015fli\u011fine sahip kullan\u0131c\u0131lar i\u00e7in uygulaman\u0131n y\u00fcklenme s\u00fcresini art\u0131rabilir. \u0130\u015fte <code>date-fns<\/code>, bu zorluklar\u0131 a\u015fmak i\u00e7in modern bir yakla\u015f\u0131m sunar.<\/p>\n<h3>date-fns&#8217;in Temel Felsefesi ve Avantajlar\u0131<\/h3>\n<p><code>date-fns<\/code>, tasar\u0131m\u0131nda birka\u00e7 temel prensibi benimsemi\u015ftir:<\/p>\n<p>*   <strong>De\u011fi\u015ftirilemezlik (Immutability):<\/strong> <code>date-fns<\/code>&#8216;teki t\u00fcm fonksiyonlar, orijinal <code>Date<\/code> nesnesini de\u011fi\u015ftirmez. Bunun yerine, her zaman yeni bir <code>Date<\/code> nesnesi d\u00f6nd\u00fcr\u00fcrler. Bu, kodunuzu daha \u00f6ng\u00f6r\u00fclebilir ve hatas\u0131z hale getirir. Fonksiyonel programlama prensiplerine uygun bu yakla\u015f\u0131m, \u00f6zellikle React, Vue gibi modern framework&#8217;lerle \u00e7al\u0131\u015f\u0131rken veri ak\u0131\u015f\u0131n\u0131 y\u00f6netmeyi kolayla\u015ft\u0131r\u0131r.<br \/>\n*   <strong>Mod\u00fclerlik ve A\u011fa\u00e7 Budama (Tree-shaking):<\/strong> <code>date-fns<\/code>, her biri kendi ba\u015f\u0131na \u00e7al\u0131\u015fan y\u00fczlerce k\u00fc\u00e7\u00fck fonksiyondan olu\u015fur. Bu sayede, uygulaman\u0131zda sadece ihtiyac\u0131n\u0131z olan fonksiyonlar\u0131 i\u00e7e aktarabilirsiniz. Modern derleyiciler (Webpack, Rollup gibi) &#8220;a\u011fa\u00e7 budama&#8221; (tree-shaking) \u00f6zelli\u011fi sayesinde kullan\u0131lmayan kodlar\u0131 paketinizden atarak nihai dosya boyutunu \u00f6nemli \u00f6l\u00e7\u00fcde k\u00fc\u00e7\u00fclt\u00fcr. Bu, uygulaman\u0131z\u0131n daha h\u0131zl\u0131 y\u00fcklenmesini sa\u011flar.<br \/>\n*   <strong>Yerel <code>Date<\/code> Nesnesini Kullanma:<\/strong> <code>date-fns<\/code>, kendi \u00f6zel bir tarih nesnesi olu\u015fturmak yerine, do\u011frudan JavaScript&#8217;in yerle\u015fik <code>Date<\/code> nesnesiyle \u00e7al\u0131\u015f\u0131r. Bu, \u00f6\u011frenme e\u011frisini d\u00fc\u015f\u00fcr\u00fcr ve di\u011fer k\u00fct\u00fcphanelerle veya yerel JavaScript koduyla entegrasyonu kolayla\u015ft\u0131r\u0131r. Ayr\u0131ca, <code>Date<\/code> nesnesinin performans optimizasyonlar\u0131ndan ve taray\u0131c\u0131 implementasyonlar\u0131ndan faydalan\u0131r.<br \/>\n*   <strong>Saf Fonksiyonlar (Pure Functions):<\/strong> T\u00fcm <code>date-fns<\/code> fonksiyonlar\u0131 saf fonksiyonlard\u0131r. Yani, ayn\u0131 girdilerle her zaman ayn\u0131 \u00e7\u0131kt\u0131y\u0131 \u00fcretirler ve d\u0131\u015far\u0131dan herhangi bir durumu de\u011fi\u015ftirmezler. Bu, test edilebilirli\u011fi art\u0131r\u0131r ve kodunuzu daha g\u00fcvenilir hale getirir.<br \/>\n*   <strong>TypeScript Deste\u011fi:<\/strong> <code>date-fns<\/code>, TypeScript ile tam uyumludur ve m\u00fckemmel tip tan\u0131mlamalar\u0131 sunar. Bu, \u00f6zellikle b\u00fcy\u00fck \u00f6l\u00e7ekli projelerde geli\u015ftirme s\u00fcrecini h\u0131zland\u0131r\u0131r ve potansiyel hatalar\u0131 derleme zaman\u0131nda yakalaman\u0131za yard\u0131mc\u0131 olur.<br \/>\n*   <strong>Uluslararas\u0131la\u015ft\u0131rma (i18n):<\/strong> K\u00fct\u00fcphane, \u00e7e\u015fitli diller ve yerel ayarlarla (locale) \u00e7al\u0131\u015fmay\u0131 destekler. Bi\u00e7imlendirme veya g\u00f6receli zaman ifadeleri gibi i\u015flemlerde farkl\u0131 yerel ayarlar\u0131 kolayca kullanabilirsiniz.<\/p>\n<h3>Ba\u015flang\u0131\u00e7: Kurulum ve Temel Kullan\u0131m<\/h3>\n<p><code>date-fns<\/code>&#8216;i projenize dahil etmek olduk\u00e7a basittir. npm veya yarn kullanarak kurabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">npm install date-fns\n<h2>veya<\/h2>\nyarn add date-fns<\/code><\/pre>\n<p>Kurulum tamamland\u0131ktan sonra, ihtiyac\u0131n\u0131z olan fonksiyonlar\u0131 do\u011frudan i\u00e7e aktararak kullanmaya ba\u015flayabilirsiniz. \u00d6rne\u011fin, bir tarihi bi\u00e7imlendirmek i\u00e7in <code>format<\/code> fonksiyonunu kullanabiliriz:<\/p>\n<pre><code class=\"language-javascript\">import { format } from 'date-fns';\n\nconst now = new Date(); \/\/ \u015eu anki tarih ve saat\nconst formattedDate = format(now, 'dd\/MM\/yyyy'); \/\/ \"25\/10\/2023\" gibi bir \u00e7\u0131kt\u0131\nconsole.log(formattedDate);\n\nconst formattedTime = format(now, 'HH:mm:ss'); \/\/ \"14:35:00\" gibi bir \u00e7\u0131kt\u0131\nconsole.log(formattedTime);<\/code><\/pre>\n<p>Bu \u00f6rnekte g\u00f6r\u00fcld\u00fc\u011f\u00fc gibi, <code>date-fns<\/code> fonksiyonlar\u0131 genellikle bir <code>Date<\/code> nesnesi al\u0131r ve ard\u0131ndan belirli bir i\u015flem yapar. Bu sadelik, k\u00fct\u00fcphanenin temel \u00e7ekicili\u011fidir.<\/p>\n<h3>Temel Fonksiyon Kategorileri ve \u00d6rnekler<\/h3>\n<p><code>date-fns<\/code>, tarih ve saatlerle ilgili neredeyse her t\u00fcrl\u00fc ihtiyac\u0131 kar\u015f\u0131layacak zengin bir fonksiyon setine sahiptir. Bu fonksiyonlar\u0131 ana kategorilere ay\u0131rarak inceleyelim:<\/p>\n<h4>1. Bi\u00e7imlendirme (Formatting)<\/h4>\n<p>Tarihleri insan taraf\u0131ndan okunabilir stringlere d\u00f6n\u00fc\u015ft\u00fcrmek en yayg\u0131n i\u015flemlerden biridir. <code>date-fns<\/code> bu konuda olduk\u00e7a esnektir.<\/p>\n<p>*   <code>format(date, formatString)<\/code>: En s\u0131k kullan\u0131lan fonksiyondur. Bir <code>Date<\/code> nesnesini, verilen bi\u00e7im stringine g\u00f6re bi\u00e7imlendirir. Bi\u00e7im stringleri Moment.js&#8217;e benzerdir (<code>yyyy<\/code> y\u0131l, <code>MM<\/code> ay, <code>dd<\/code> g\u00fcn, <code>HH<\/code> saat, <code>mm<\/code> dakika, <code>ss<\/code> saniye vb.).<\/p>\n<pre><code class=\"language-javascript\">import { format } from 'date-fns';\n\n    const myDate = new Date(2023, 9, 25, 15, 30, 45); \/\/ 25 Ekim 2023, 15:30:45\n\n    console.log(format(myDate, 'dd MMMM yyyy, HH:mm:ss'));\n    \/\/ \u00c7\u0131kt\u0131: \"25 October 2023, 15:30:45\" (Varsay\u0131lan \u0130ngilizce locale ile)\n\n    console.log(format(myDate, 'EEEE, do MMMM yyyy'));\n    \/\/ \u00c7\u0131kt\u0131: \"Wednesday, 25th October 2023\"<\/code><\/pre>\n<p>*   <code>formatDistance(date, baseDate, options)<\/code>: \u0130ki tarih aras\u0131ndaki mesafeyi &#8220;X g\u00fcn \u00f6nce&#8221;, &#8220;yakla\u015f\u0131k 2 ay sonra&#8221; gibi g\u00f6receli bir \u015fekilde bi\u00e7imlendirir.<\/p>\n<pre><code class=\"language-javascript\">import { formatDistance, subDays } from 'date-fns';\n\n    const today = new Date();\n    const twoDaysAgo = subDays(today, 2); \/\/ \u0130ki g\u00fcn \u00f6nceki tarih\n\n    console.log(formatDistance(twoDaysAgo, today));\n    \/\/ \u00c7\u0131kt\u0131: \"2 days ago\"<\/code><\/pre>\n<p>*   <code>formatRelative(date, baseDate, options)<\/code>: Bir tarihi, referans bir tarihe g\u00f6re g\u00f6receli olarak bi\u00e7imlendirir (&#8220;bug\u00fcn saat 10:00&#8221;, &#8220;yar\u0131n&#8221;, &#8220;ge\u00e7en hafta Sal\u0131&#8221; gibi).<\/p>\n<pre><code class=\"language-javascript\">import { formatRelative, subHours } from 'date-fns';\n\n    const today = new Date();\n    const threeHoursAgo = subHours(today, 3);\n\n    console.log(formatRelative(threeHoursAgo, today));\n    \/\/ \u00c7\u0131kt\u0131: \"today at 11:30 AM\" (Saat de\u011fi\u015febilir)<\/code><\/pre>\n<h4>2. Ayr\u0131\u015ft\u0131rma (Parsing)<\/h4>\n<p>String format\u0131ndaki tarihleri <code>Date<\/code> nesnelerine d\u00f6n\u00fc\u015ft\u00fcrmek i\u00e7in kullan\u0131l\u0131r.<\/p>\n<p>*   <code>parse(dateString, formatString, referenceDate)<\/code>: Belirli bir format stringine uyan bir tarih stringini ayr\u0131\u015ft\u0131r\u0131r. <code>referenceDate<\/code> genellikle ayr\u0131\u015ft\u0131rma s\u0131ras\u0131nda eksik olan tarih par\u00e7alar\u0131n\u0131 (\u00f6rne\u011fin sadece saat verildi\u011finde g\u00fcn, ay, y\u0131l) tamamlamak i\u00e7in kullan\u0131l\u0131r.<\/p>\n<pre><code class=\"language-javascript\">import { parse } from 'date-fns';\n\n    const dateString = '25.10.2023 10:30';\n    const formatStr = 'dd.MM.yyyy HH:mm';\n    const parsedDate = parse(dateString, formatStr, new Date()); \/\/ new Date() eksik par\u00e7alar i\u00e7in referans\n\n    console.log(parsedDate); \/\/ Date nesnesi \u00e7\u0131kt\u0131s\u0131<\/code><\/pre>\n<p>*   <code>parseISO(isoString)<\/code>: ISO 8601 format\u0131ndaki bir stringi (\u00f6rne\u011fin &#8220;2023-10-25T14:30:00.000Z&#8221;) ayr\u0131\u015ft\u0131r\u0131r.<\/p>\n<pre><code class=\"language-javascript\">import { parseISO } from 'date-fns';\n\n    const isoString = '2023-10-25T14:30:00.000Z';\n    const parsedIsoDate = parseISO(isoString);\n\n    console.log(parsedIsoDate); \/\/ Date nesnesi \u00e7\u0131kt\u0131s\u0131<\/code><\/pre>\n<h4>3. Manip\u00fclasyon (Manipulation)<\/h4>\n<p>Bir tarihe belirli bir zaman birimi eklemek veya \u00e7\u0131karmak i\u00e7in kullan\u0131l\u0131r. T\u00fcm bu fonksiyonlar de\u011fi\u015ftirilemezdir (immutable), yani yeni bir <code>Date<\/code> nesnesi d\u00f6nd\u00fcr\u00fcrler.<\/p>\n<p>*   <code>addYears(date, amount)<\/code>, <code>addMonths(date, amount)<\/code>, <code>addWeeks(date, amount)<\/code>, <code>addDays(date, amount)<\/code>, <code>addHours(date, amount)<\/code>, <code>addMinutes(date, amount)<\/code>, <code>addSeconds(date, amount)<\/code>: Bir tarihe belirtilen miktarda zaman birimi ekler.<\/p>\n<pre><code class=\"language-javascript\">import { addDays, addHours } from 'date-fns';\n\n    const today = new Date();\n    const tomorrow = addDays(today, 1);\n    const inTwoHours = addHours(today, 2);\n\n    console.log(tomorrow);\n    console.log(inTwoHours);<\/code><\/pre>\n<p>*   <code>subYears(date, amount)<\/code>, <code>subMonths(date, amount)<\/code>, vb.: Bir tarihten belirtilen miktarda zaman birimi \u00e7\u0131kar\u0131r.<\/p>\n<pre><code class=\"language-javascript\">import { subMonths, subWeeks } from 'date-fns';\n\n    const now = new Date();\n    const lastMonth = subMonths(now, 1);\n    const lastWeek = subWeeks(now, 1);\n\n    console.log(lastMonth);\n    console.log(lastWeek);<\/code><\/pre>\n<p>*   <code>startOfDay(date)<\/code>, <code>endOfDay(date)<\/code>, <code>startOfWeek(date, options)<\/code>, <code>endOfWeek(date, options)<\/code>, <code>startOfMonth(date)<\/code>, <code>endOfMonth(date)<\/code>, <code>startOfYear(date)<\/code>, <code>endOfYear(date)<\/code>: Bir tarihin ba\u015flang\u0131c\u0131n\u0131 veya biti\u015fini d\u00f6nd\u00fcr\u00fcr. Haftan\u0131n ba\u015flang\u0131c\u0131 i\u00e7in <code>weekStartsOn<\/code> se\u00e7ene\u011fi ile haftan\u0131n hangi g\u00fcn ba\u015flad\u0131\u011f\u0131n\u0131 belirtebilirsiniz (\u00f6rne\u011fin Pazar i\u00e7in 0, Pazartesi i\u00e7in 1).<\/p>\n<pre><code class=\"language-javascript\">import { startOfDay, endOfMonth } from 'date-fns';\n\n    const someDate = new Date(2023, 9, 15, 10, 30); \/\/ 15 Ekim 2023, 10:30\n    const startOfToday = startOfDay(someDate);\n    const endOfTheMonth = endOfMonth(someDate);\n\n    console.log(startOfToday); \/\/ 15 Ekim 2023, 00:00:00\n    console.log(endOfTheMonth); \/\/ 31 Ekim 2023, 23:59:59.999<\/code><\/pre>\n<h4>4. Kar\u015f\u0131la\u015ft\u0131rma ve Fark (Comparison &#038; Difference)<\/h4>\n<p>\u0130ki tarih aras\u0131ndaki ili\u015fkiyi veya fark\u0131 bulmak i\u00e7in kullan\u0131l\u0131r.<\/p>\n<p>*   <code>isBefore(date, dateToCompare)<\/code>, <code>isAfter(date, dateToCompare)<\/code>, <code>isEqual(date, dateToCompare)<\/code>: Bir tarihin di\u011ferinden \u00f6nce mi, sonra m\u0131 oldu\u011funu veya e\u015fit mi oldu\u011funu kontrol eder.<\/p>\n<pre><code class=\"language-javascript\">import { isBefore, isAfter, isEqual } from 'date-fns';\n\n    const date1 = new Date(2023, 9, 25);\n    const date2 = new Date(2023, 9, 26);\n    const date3 = new Date(2023, 9, 25);\n\n    console.log(isBefore(date1, date2)); \/\/ true\n    console.log(isAfter(date2, date1));  \/\/ true\n    console.log(isEqual(date1, date3));  \/\/ true<\/code><\/pre>\n<p>*   <code>differenceInDays(dateLeft, dateRight)<\/code>, <code>differenceInHours(dateLeft, dateRight)<\/code>, <code>differenceInMinutes(dateLeft, dateRight)<\/code>, vb.: \u0130ki tarih aras\u0131ndaki fark\u0131 belirtilen birim cinsinden d\u00f6nd\u00fcr\u00fcr.<\/p>\n<pre><code class=\"language-javascript\">import { differenceInDays, differenceInHours } from 'date-fns';\n\n    const startDate = new Date(2023, 9, 20);\n    const endDate = new Date(2023, 9, 25);\n\n    console.log(differenceInDays(endDate, startDate)); \/\/ 5\n    console.log(differenceInHours(endDate, startDate)); \/\/ 120 (5 * 24)<\/code><\/pre>\n<p>*   <code>isSameDay(date1, date2)<\/code>, <code>isSameMonth(date1, date2)<\/code>, <code>isSameYear(date1, date2)<\/code>: \u0130ki tarihin ayn\u0131 g\u00fcn, ay veya y\u0131l i\u00e7inde olup olmad\u0131\u011f\u0131n\u0131 kontrol eder.<\/p>\n<pre><code class=\"language-javascript\">import { isSameDay } from 'date-fns';\n\n    const dateA = new Date(2023, 9, 25, 10, 0);\n    const dateB = new Date(2023, 9, 25, 15, 30);\n\n    console.log(isSameDay(dateA, dateB)); \/\/ true<\/code><\/pre>\n<h4>5. Yard\u0131mc\u0131 Fonksiyonlar (Utility Functions)<\/h4>\n<p>\u00c7e\u015fitli genel ama\u00e7l\u0131 tarih ve saat i\u015flemleri i\u00e7in kullan\u0131l\u0131r.<\/p>\n<p>*   <code>getYear(date)<\/code>, <code>getMonth(date)<\/code>, <code>getDate(date)<\/code>, <code>getHours(date)<\/code>, <code>getMinutes(date)<\/code>, <code>getSeconds(date)<\/code>: Bir <code>Date<\/code> nesnesinden belirli bir zaman birimini al\u0131r. <code>getMonth<\/code> 0&#8217;dan ba\u015flar (Ocak 0&#8217;d\u0131r).<\/p>\n<pre><code class=\"language-javascript\">import { getYear, getMonth, getDate } from 'date-fns';\n\n    const myDate = new Date(2023, 9, 25); \/\/ 25 Ekim 2023\n\n    console.log(getYear(myDate));  \/\/ 2023\n    console.log(getMonth(myDate)); \/\/ 9 (Ekim)\n    console.log(getDate(myDate));  \/\/ 25<\/code><\/pre>\n<p>*   <code>isValid(date)<\/code>: Bir <code>Date<\/code> nesnesinin ge\u00e7erli olup olmad\u0131\u011f\u0131n\u0131 kontrol eder.<\/p>\n<pre><code class=\"language-javascript\">import { isValid } from 'date-fns';\n\n    console.log(isValid(new Date('2023-10-25')));  \/\/ true\n    console.log(isValid(new Date('invalid-date'))); \/\/ false<\/code><\/pre>\n<p>*   <code>toDate(argument)<\/code>: \u00c7e\u015fitli girdileri (say\u0131, string, ba\u015fka bir Date nesnesi) bir <code>Date<\/code> nesnesine d\u00f6n\u00fc\u015ft\u00fcrmeye \u00e7al\u0131\u015f\u0131r.<\/p>\n<pre><code class=\"language-javascript\">import { toDate } from 'date-fns';\n\n    console.log(toDate(1678886400000)); \/\/ Timestamp'ten Date\n    console.log(toDate('2023-10-25'));   \/\/ String'ten Date (ISO format\u0131n\u0131 varsayar)<\/code><\/pre>\n<p>*   <code>eachDayOfInterval(interval, options)<\/code>: Belirtilen bir zaman aral\u0131\u011f\u0131ndaki her g\u00fcn\u00fc i\u00e7eren bir <code>Date<\/code> nesneleri dizisi d\u00f6nd\u00fcr\u00fcr.<\/p>\n<pre><code class=\"language-javascript\">import { eachDayOfInterval } from 'date-fns';\n\n    const result = eachDayOfInterval({\n      start: new Date(2023, 9, 20),\n      end: new Date(2023, 9, 25)\n    });\n\n    console.log(result); \/\/ [20 Ekim, 21 Ekim, ..., 25 Ekim] Date nesneleri dizisi<\/code><\/pre>\n<h3>Uluslararas\u0131la\u015ft\u0131rma (i18n)<\/h3>\n<p><code>date-fns<\/code>, farkl\u0131 dillerdeki tarih ve saat bi\u00e7imlendirme ihtiya\u00e7lar\u0131n\u0131 kar\u015f\u0131lamak i\u00e7in g\u00fc\u00e7l\u00fc bir uluslararas\u0131la\u015ft\u0131rma (i18n) deste\u011fi sunar. <code>format<\/code>, <code>formatDistance<\/code>, <code>formatRelative<\/code> gibi fonksiyonlara bir <code>locale<\/code> nesnesi ge\u00e7irerek \u00e7\u0131kt\u0131n\u0131n dilini de\u011fi\u015ftirebilirsiniz.<\/p>\n<pre><code class=\"language-javascript\">import { format, formatDistance } from 'date-fns';\nimport { tr } from 'date-fns\/locale'; \/\/ T\u00fcrk\u00e7e locale'i i\u00e7e aktar\n\nconst myDate = new Date(2023, 9, 25, 15, 30, 45); \/\/ 25 Ekim 2023, 15:30:45\nconst today = new Date();\nconst twoDaysAgo = new Date(2023, 9, 23);\n\nconsole.log(format(myDate, 'dd MMMM yyyy, EEEE', { locale: tr }));\n\/\/ \u00c7\u0131kt\u0131: \"25 Ekim 2023, \u00c7ar\u015famba\"\n\nconsole.log(formatDistance(twoDaysAgo, today, { locale: tr, addSuffix: true }));\n\/\/ \u00c7\u0131kt\u0131: \"2 g\u00fcn \u00f6nce\"<\/code><\/pre>\n<p>Bu \u00f6zellik, k\u00fcresel uygulamalar geli\u015ftirirken b\u00fcy\u00fck kolayl\u0131k sa\u011flar ve kullan\u0131c\u0131 deneyimini iyile\u015ftirir.<\/p>\n<h3>Geli\u015fmi\u015f Konular ve En \u0130yi Uygulamalar<\/h3>\n<p>*   <strong>Zaman Dilimleri (Time Zones):<\/strong> <code>date-fns<\/code>, JavaScript&#8217;in yerel <code>Date<\/code> nesnesiyle \u00e7al\u0131\u015ft\u0131\u011f\u0131 i\u00e7in, do\u011frudan zaman dilimi manip\u00fclasyonu yapmaz. <code>Date<\/code> nesnesi, taray\u0131c\u0131n\u0131n veya Node.js ortam\u0131n\u0131n yerel zaman dilimini kullan\u0131r. E\u011fer sunucu taraf\u0131nda veya farkl\u0131 zaman dilimlerinde karma\u015f\u0131k i\u015flemler yapman\u0131z gerekiyorsa, <code>date-fns<\/code>&#8216;i <code>date-fns-tz<\/code> gibi \u00f6zel bir eklentiyle veya <code>Intl.DateTimeFormat<\/code> gibi yerel Web API&#8217;leriyle birlikte kullanman\u0131z gerekebilir. <code>date-fns-tz<\/code> k\u00fct\u00fcphanesi, <code>date-fns<\/code> fonksiyonlar\u0131n\u0131n zaman dilimi fark\u0131ndal\u0131\u011f\u0131yla \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flayan bir k\u00f6pr\u00fc g\u00f6revi g\u00f6r\u00fcr.<br \/>\n*   <strong>TypeScript Entegrasyonu:<\/strong> <code>date-fns<\/code>&#8216;in TypeScript deste\u011fi m\u00fckemmeldir. Fonksiyonlar\u0131n tipleri, parametreleri ve d\u00f6n\u00fc\u015f de\u011ferleri do\u011fru bir \u015fekilde tan\u0131mlanm\u0131\u015ft\u0131r. Bu, geli\u015ftirme s\u0131ras\u0131nda otomatik tamamlama, tip kontrol\u00fc ve hata ay\u0131klama s\u00fcre\u00e7lerini b\u00fcy\u00fck \u00f6l\u00e7\u00fcde kolayla\u015ft\u0131r\u0131r.<br \/>\n*   <strong>Performans ve A\u011fa\u00e7 Budama:<\/strong> Daha \u00f6nce de belirtildi\u011fi gibi, <code>date-fns<\/code>&#8216;in mod\u00fcler yap\u0131s\u0131, uygulaman\u0131z\u0131n nihai paket boyutunu minimumda tutar. Sadece ihtiyac\u0131n\u0131z olan fonksiyonlar\u0131 i\u00e7e aktararak, gereksiz kodlar\u0131n uygulaman\u0131za dahil edilmesini \u00f6nlersiniz. Bu, \u00f6zellikle performans kritik uygulamalar veya mobil web siteleri i\u00e7in \u00e7ok \u00f6nemlidir.<\/p>\n<pre><code class=\"language-javascript\">\/\/ K\u00f6t\u00fc pratik: T\u00fcm k\u00fct\u00fcphaneyi i\u00e7e aktarmak (a\u011fa\u00e7 budamay\u0131 engeller)\n    \/\/ import * as dateFns from 'date-fns';\n\n    \/\/ \u0130yi pratik: Sadece ihtiyac\u0131n\u0131z olan fonksiyonlar\u0131 i\u00e7e aktarmak\n    import { format, addDays } from 'date-fns';<\/code><\/pre>\n<p>*   <strong>Moment.js ve Day.js ile Kar\u015f\u0131la\u015ft\u0131rma:<\/strong><br \/>\n    *   <strong>Moment.js:<\/strong> Uzun y\u0131llar boyunca standart olmu\u015ftur ancak b\u00fcy\u00fck boyutu, de\u011fi\u015ftirilebilir yap\u0131s\u0131 ve art\u0131k aktif olarak geli\u015ftirilmiyor olu\u015fu nedeniyle yerini yeni nesil k\u00fct\u00fcphanelere b\u0131rakmaktad\u0131r.<br \/>\n    *   <strong>Day.js:<\/strong> Moment.js&#8217;e benzer bir API sunan, ancak \u00e7ok daha hafif bir alternatiftir. Boyut ve performans a\u00e7\u0131s\u0131ndan <code>date-fns<\/code> ile rekabet eder. Ancak <code>date-fns<\/code>, saf fonksiyonel yakla\u015f\u0131m\u0131 ve yerel <code>Date<\/code> nesnesiyle \u00e7al\u0131\u015fma prensibiyle ayr\u0131\u015f\u0131r. Day.js&#8217;in API&#8217;si Moment.js&#8217;e daha yak\u0131nken, <code>date-fns<\/code> daha &#8220;JavaScript-native&#8221; bir his verir.<br \/>\n    *   <strong>date-fns:<\/strong> De\u011fi\u015ftirilemezlik, mod\u00fclerlik ve saf fonksiyonlar \u00fczerine kurulu modern bir yakla\u015f\u0131ma sahiptir. En k\u00fc\u00e7\u00fck paket boyutunu hedefler ve TypeScript deste\u011fi m\u00fckemmeldir. Fonksiyonel programlama paradigmas\u0131n\u0131 benimseyen geli\u015ftiriciler i\u00e7in idealdir.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p><code>date-fns<\/code>, JavaScript&#8217;te tarih ve saat i\u015flemleriyle u\u011fra\u015fan geli\u015ftiriciler i\u00e7in g\u00fc\u00e7l\u00fc, esnek ve modern bir \u00e7\u00f6z\u00fcmd\u00fcr. Yerle\u015fik <code>Date<\/code> nesnesinin s\u0131n\u0131rlamalar\u0131n\u0131 a\u015farken, Moment.js gibi eski k\u00fct\u00fcphanelerin getirdi\u011fi dezavantajlardan ka\u00e7\u0131n\u0131r. De\u011fi\u015ftirilemez yap\u0131s\u0131, mod\u00fcler mimarisi, a\u011fa\u00e7 budama dostu tasar\u0131m\u0131 ve m\u00fckemmel TypeScript deste\u011fi ile <code>date-fns<\/code>, modern web uygulamalar\u0131n\u0131n performans ve s\u00fcrd\u00fcr\u00fclebilirlik gereksinimlerini kar\u015f\u0131lar.<\/p>\n<p>E\u011fer projenizde tarih ve saatlerle s\u0131k\u00e7a \u00e7al\u0131\u015f\u0131yor, kodunuzun \u00f6ng\u00f6r\u00fclebilir ve bak\u0131m\u0131 kolay olmas\u0131n\u0131 istiyor, ayn\u0131 zamanda uygulama boyutunu d\u00fc\u015f\u00fck tutmay\u0131 hedefliyorsan\u0131z, <code>date-fns<\/code> sizin i\u00e7in do\u011fru se\u00e7im olabilir. K\u00fct\u00fcphanenin geni\u015f fonksiyon yelpazesi, basit ve tutarl\u0131 API&#8217;si sayesinde, tarihle ilgili karma\u015f\u0131k g\u00f6revleri bile \u015fa\u015f\u0131rt\u0131c\u0131 bir kolayl\u0131kla yerine getirebilirsiniz. <code>date-fns<\/code> ile tan\u0131\u015fmak, JavaScript&#8217;teki tarih manip\u00fclasyon deneyiminizi kesinlikle iyile\u015ftirecektir.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"date-fns&#8217;e H\u0131zl\u0131 Bir Bak\u0131\u015f: Basit Bir JavaScript Tarih K\u00fct\u00fcphanesi\nJavaScript, web geli\u015ftirmenin temel ta\u015flar\u0131ndan biridir ve modern uygulam","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[129],"tags":[],"class_list":{"0":"post-31088","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-javascript","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>date-fns&#039;e H\u0131zl\u0131 Bir Bak\u0131\u015f: Basit Bir JavaScript Tarih K\u00fct\u00fcphanesi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/date-fnse-hizli-bir-bakis-basit-bir-javascript-tarih-kutuphanesi\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"date-fns&#039;e H\u0131zl\u0131 Bir Bak\u0131\u015f: Basit Bir JavaScript Tarih K\u00fct\u00fcphanesi\" \/>\n<meta property=\"og:description\" content=\"date-fns&#039;e H\u0131zl\u0131 Bir Bak\u0131\u015f: Basit Bir JavaScript Tarih K\u00fct\u00fcphanesi JavaScript, web geli\u015ftirmenin temel ta\u015flar\u0131ndan biridir ve modern uygulam\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/date-fnse-hizli-bir-bakis-basit-bir-javascript-tarih-kutuphanesi\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-05T12:41:00+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"13 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/date-fnse-hizli-bir-bakis-basit-bir-javascript-tarih-kutuphanesi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/date-fnse-hizli-bir-bakis-basit-bir-javascript-tarih-kutuphanesi\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"date-fns&#8217;e H\u0131zl\u0131 Bir Bak\u0131\u015f: Basit Bir JavaScript Tarih K\u00fct\u00fcphanesi\",\"datePublished\":\"2025-10-05T12:41:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/date-fnse-hizli-bir-bakis-basit-bir-javascript-tarih-kutuphanesi\/\"},\"wordCount\":1851,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Javascript\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/date-fnse-hizli-bir-bakis-basit-bir-javascript-tarih-kutuphanesi\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/date-fnse-hizli-bir-bakis-basit-bir-javascript-tarih-kutuphanesi\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/date-fnse-hizli-bir-bakis-basit-bir-javascript-tarih-kutuphanesi\/\",\"name\":\"date-fns'e H\u0131zl\u0131 Bir Bak\u0131\u015f: Basit Bir JavaScript Tarih K\u00fct\u00fcphanesi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-10-05T12:41:00+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/date-fnse-hizli-bir-bakis-basit-bir-javascript-tarih-kutuphanesi\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/date-fnse-hizli-bir-bakis-basit-bir-javascript-tarih-kutuphanesi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/date-fnse-hizli-bir-bakis-basit-bir-javascript-tarih-kutuphanesi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"date-fns&#8217;e H\u0131zl\u0131 Bir Bak\u0131\u015f: Basit Bir JavaScript Tarih K\u00fct\u00fcphanesi\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"date-fns'e H\u0131zl\u0131 Bir Bak\u0131\u015f: Basit Bir JavaScript Tarih K\u00fct\u00fcphanesi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/date-fnse-hizli-bir-bakis-basit-bir-javascript-tarih-kutuphanesi\/","og_locale":"tr_TR","og_type":"article","og_title":"date-fns'e H\u0131zl\u0131 Bir Bak\u0131\u015f: Basit Bir JavaScript Tarih K\u00fct\u00fcphanesi","og_description":"date-fns'e H\u0131zl\u0131 Bir Bak\u0131\u015f: Basit Bir JavaScript Tarih K\u00fct\u00fcphanesi JavaScript, web geli\u015ftirmenin temel ta\u015flar\u0131ndan biridir ve modern uygulam","og_url":"https:\/\/fatihsoysal.com\/blog\/date-fnse-hizli-bir-bakis-basit-bir-javascript-tarih-kutuphanesi\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-10-05T12:41:00+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"13 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/date-fnse-hizli-bir-bakis-basit-bir-javascript-tarih-kutuphanesi\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/date-fnse-hizli-bir-bakis-basit-bir-javascript-tarih-kutuphanesi\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"date-fns&#8217;e H\u0131zl\u0131 Bir Bak\u0131\u015f: Basit Bir JavaScript Tarih K\u00fct\u00fcphanesi","datePublished":"2025-10-05T12:41:00+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/date-fnse-hizli-bir-bakis-basit-bir-javascript-tarih-kutuphanesi\/"},"wordCount":1851,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Javascript"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/date-fnse-hizli-bir-bakis-basit-bir-javascript-tarih-kutuphanesi\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/date-fnse-hizli-bir-bakis-basit-bir-javascript-tarih-kutuphanesi\/","url":"https:\/\/fatihsoysal.com\/blog\/date-fnse-hizli-bir-bakis-basit-bir-javascript-tarih-kutuphanesi\/","name":"date-fns'e H\u0131zl\u0131 Bir Bak\u0131\u015f: Basit Bir JavaScript Tarih K\u00fct\u00fcphanesi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-10-05T12:41:00+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/date-fnse-hizli-bir-bakis-basit-bir-javascript-tarih-kutuphanesi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/date-fnse-hizli-bir-bakis-basit-bir-javascript-tarih-kutuphanesi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/date-fnse-hizli-bir-bakis-basit-bir-javascript-tarih-kutuphanesi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"date-fns&#8217;e H\u0131zl\u0131 Bir Bak\u0131\u015f: Basit Bir JavaScript Tarih K\u00fct\u00fcphanesi"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/31088","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=31088"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/31088\/revisions"}],"predecessor-version":[{"id":31089,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/31088\/revisions\/31089"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=31088"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=31088"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=31088"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}