vikas rathore
vikas rathore

Reputation: 1

The json data having date format of ISO 8601 format I want to change the format to dd/mm/yy

import React, {
    useState
} from "react";
import {
    MaterialReactTable
} from "material-react-table";
import Fuse from "fuse.js";
import {
    Slider,
    TextField,
    IconButton,
    Drawer
} from "@mui/material";
import {
    DatePicker
} from "@mui/x-date-pickers";
import GroupingDropdown from "./GroupingDropDown";
import DateTimeFormatter from "./DateTimeFormatter";
import CategorySubcategoryFilter from "./CategorySubcategoryFilter";
import FilterListIcon from "@mui/icons-material/FilterList";
import SortIcon from "@mui/icons-material/Sort";
import GroupIcon from "@mui/icons-material/Group";
import SortingFilter from "./SortingFilter";
const DataTable = ({
        data,
        columns
    }) = \ > {
        const\ [columnVisibility, setColumnVisibility\] = useState({});
        const\ [globalFilter, setGlobalFilter\] = useState("");
        const\ [nameFilter, setNameFilter\] = useState("");
        const\ [categoryFilter, setCategoryFilter\] = useState(\[\]);
        const\ [subcategoryFilter, setSubcategoryFilter\] = useState(\[\]);
        const\ [priceRange, setPriceRange\] = useState(\[0, 1000\]);
        const\ [createdAtRange, setCreatedAtRange\] = useState(\[null, null\]);
        const\ [grouping, setGrouping\] = useState(\[\]);
        const\ [showFilterDrawer, setShowFilterDrawer\] = useState(false);
        const\ [showSortingDrawer, setShowSortingDrawer\] = useState(false);
        const\ [showGroupingDrawer, setShowGroupingDrawer\] = useState(false);
        const\ [sortedData, setSortedData\] = useState(data);
        const fuse = new Fuse(sortedData, {
            keys: \["name"\],
            includeMatches: true,
        });
        const handleSorting = (columnKey) = \ > {
            const sorted = \ [...sortedData\].sort((a, b) = \ > {
                if (a\[columnKey\]\ < b\[columnKey\]) return -1;
                if (a\[columnKey\]\ > b\[columnKey\]) return 1;
                return 0;
            });setSortedData(sorted);
        };
        const filteredData = data.filter((item) = \ > {
            return ((fuse.search(globalFilter).map((result) = \ > result.item.name).includes(item.name) || globalFilter === "") && (fuse.search(nameFilter).map((result) = \ > result.item.name).includes(item.name) || nameFilter === "") && (categoryFilter.length === 0 || categoryFilter.includes(item.category)) && (subcategoryFilter.length === 0 || subcategoryFilter.includes(item.subcategory)) && item.price\ >= priceRange\[0\] && item.price\ <= priceRange\[1\] && (createdAtRange\[0\] === null || createdAtRange\[1\] === null || (new Date(item.createdAt)\ >= createdAtRange\[0\] && new Date(item.createdAt)\ <= createdAtRange\[1\])));
        });
        const handleGroupingChange = (columnIds) = \ > {
            setGrouping(columnIds);setShowGroupingDrawer(false);
        };
        return (\ < \ > \ < div style = {
                    {
                        display: "flex",
                        alignItems: "flex-start",
                        flexDirection: "row-reverse",
                        padding: "10px",
                    }
                }\ > \ < input value = {
                    globalFilter || ""
                }
                onChange = {
                    (e) = \ > setGlobalFilter(e.target.value)
                }
                placeholder = "Search..."
                style = {
                    {
                        marginRight: "10px",
                        padding: "8px",
                        border: "1px solid #ccc",
                        borderRadius: "5px",
                        fontSize: "14px",
                        outline: "none",
                    }
                }
                /\>         \<input           value={nameFilter || ""}           onChange={(e) =\> setNameFilter(e.target.value)}           placeholder="Filter by name..."           style={{             marginRight: "10px",             padding: "8px",             border: "1px solid #ccc",             borderRadius: "5px",             fontSize: "14px",             outline: "none",           }}         /\ > \ < IconButton onClick = {
                    () = \ > setShowFilterDrawer(true)
                }\ > \ < FilterListIcon / \ > \ < /IconButton\>         \<IconButton onClick={() =\> setShowSortingDrawer(true)}\>           \<SortIcon /\ > \ < /IconButton\>         \<IconButton onClick={() =\> setShowGroupingDrawer(true)}\>           \<GroupIcon /\ > \ < /IconButton\>       \</div\ > \ < MaterialReactTable columns = {
                    columns
                }
                data = {
                    filteredData
                }
                columnVisibility = {
                    columnVisibility
                }
                onColumnVisibilityChange = {
                    setColumnVisibility
                }
                enableSorting globalFilter = {
                    globalFilter
                }
                enableGrouping grouping = {
                    grouping
                }
                renderCell = {
                    ({
                        cell
                    }) = \ > {
                        if (cell.column.accessorKey === "createdAt" || cell.column.accessorKey === "updatedAt") {
                            return\ < DateTimeFormatter value = {
                                cell.value
                            }
                            /\>;           }           return cell.renderedCellValue;         }}  / / DateTimeFormatter.jsx
                            import React from "react";
                            import dayjs from "dayjs";
                            const DateTimeFormatter = ({
                                    value
                                }) = \ > {
                                    console.log("Original value:", value); // Debugging statement   const dateTime = dayjs(value);   console.log("Formatted date:", dateTime.format("DD/MM/YY")); // Debugging statement   const formattedDateTime = dateTime.format("DD/MM/YY");    return \<span\>{formattedDateTime}\</span\>; };  export default DateTimeFormatter; //json.data   {         "id": 1,         "name": "Nutrition Attachment",         "category": "Health",         "subcategory": "Nutrition",         "createdAt": "2016-03-24T05:28:03.099+05:30",         "updatedAt": "2016-03-24T05:28:03.099+05:30",         "price": 24.99,         "sale_price": 21.95     }

In my code json data having date format like different I want date format be like dd/mm/yycan anyone help for fix the issue In these stackoverflow shows error while question posting It looks like your post is mostly code; please add some more details.

In my code json data having date format like different I want date format be like dd/mm/yycan anyone help for fix the issue In these stackoverflow shows error while question posting It looks like your post is mostly code; please add some more details.

Upvotes: 0

Views: 187

Answers (1)

JE Ati&#233;nzar
JE Ati&#233;nzar

Reputation: 361

You have dates in ISO8601 format.

You can create a new Date object from any string in this format and then extract the different parts of the date to compose your preferred format

const date = new Date("2016-03-24T05:28:03.099+05:30");

const day = date.getDate().toString().padStart(2, '0');
const month = (date.getMonth() + 1).toString().padStart(2, '0'); // months in JS are indexed from 0
const year = date.getFullYear().toString().slice(-2); // 2 last digits

const formattedDate = `${day}/${month}/${year}`;

console.log(formattedDate ); // Result: "24/03/16"

I hope that it will help.

Upvotes: 1

Related Questions