Home > Software design >  Is there a way to reverse a format in date-fns?
Is there a way to reverse a format in date-fns?

Time:09-27

I am from Thailand, and wondering is there a way to reverse a format in date-fns?

For example, this function will turn "2022-09-24" to "saturday-24-september-2564"

This there a good method using date-fns to create a new function that will turn "saturday-9-september-2564" back to "2022-09-24"?

Thank you so much in advance

//----------------

import format from "date-fns/format";
import th from "date-fns/locale/th";
import addYears from "date-fns/addYears";

const transformDate = (d) => {
        const newDate = new Date(d);
        const year_ymd = addYears(newDate, 543);

        const urlText =
          format(newDate, "EEEE'-'d'-'MMMM")   format(year_ymd, "'-'yyyy");

        return urlText.toLowerCase();
      };

transformDate(2022-09-24);

CodePudding user response:

Just the other way around it would be something like this if I'm not mistaken:

import {format, addYears, parse} from "date-fns";
import {th} from "date-fns/locale/th";

const transformDate = (d) => {
        const newDate = new Date(d);
        const year_ymd = addYears(newDate, 543);

        const urlText =
          format(newDate, "EEEE'-'d'-'MMMM")   format(year_ymd, "'-'yyyy");

        console.log(urlText.toLowerCase());
      };

transformDate('2022-09-24');

const transformDate2 = (d) => {
  const parsed = parse(d, "EEEE'-'d'-'MMMM'-'yyyy", new Date(), { locale: th })
  const formatted = format(parsed, 'dd-MM-yyyy');
  console.log(formatted)
}

transformDate2('saturday-24-september-2565')

Also, 4th param in the parsemethod contains optional properties that could be passed. In case you need anything more feel free to refference this picture:

enter image description here

  • Related