JavaScript - Reactで月の日の下に日付を表​​示するにはどうすればよいですか?

okwaves2024-01-25  10

react + moment js を使用してシンプルな今月のカレンダーを作成しようとしています。月の最初の日と終了日を取得できます。今度は日 (月、火...) の下に日付を表​​示したいと思います。最初の 9 月 01-08-2020 は火曜日より下になります

これが私のコードです https://codesandbox.io/s/quirky-ellis-xh5tn?file=/src/App.js

実際はこんな感じ

しかし、現在、私の日付はこのように水平方向に表示されています。

これが私のコードです

import React, { useState } from "react";
import "./styles.css";
import moment from "moment";

function fetchMonthDates() {
  let monthDates = [];
  let start = moment().startOf("month").date();
  let end = moment().endOf("month").date();
  for (let i = 0; i < end; i++) {
    let obj = {
      _id: moment().startOf("month").add(i, "days").format("DD-MMM-YYYY"),
      date: moment().startOf("month").add(i, "days").date()
    };
    monthDates.push(obj);
  }

  return monthDates;
}

export default function App() {
  const [state, setState] = useState(() => fetchMonthDates());
  return (
    <div className="App">
      <ul className="header">
        <li className="header-item pd15">Sun</li>
        <li className="header-item pd15">Mon</li>
        <li className="header-item pd15">Tue</li>
        <li className="header-item pd15">Wed</li>
        <li className="header-item pd15">Thu</li>
        <li className="header-item pd15">Fri</li>
        <li className="header-item pd15">Sat</li>
      </ul>
      <ul className="date-items">
        {state.map((i) => (
          <li className="pd15">{i.date}</li>
        ))}
      </ul>
    </div>
  );
}

スタイルを探しているわけではありませんが、日付は日の下に表示されるはずです。可能でしょうか。datepicker は使いたくないのですが、カスタムの今月のカレンダーを作成しています。

何かアップデートはありますか?それは可能です



------------------------

これは基本的なものですが、永続的に使用できるように調整できます。

// App.js
import React, { useState } from "react";
import "./styles.css";
import moment from "moment";

function fetchMonthDates() {
  let monthDates = [];
  let start = moment().startOf("month").date();
  let end = moment().endOf("month").date();
  // this is to offset the starting day, which was a Tues for September
  const firstDayOffSet = moment().startOf("month").day();

  for (let i = 0; i < end; i++) {
    let obj = {
      _id: moment().startOf("month").add(i, "days").format("DD-MMM-YYYY"),
      date: moment().startOf("month").add(i, "days").date()
    };
    monthDates.push(obj);
  }

  // pads the beginning of the array to slide the days to the right
  // you'll want to pad this with the previous months days up to the 
  // offset count
  return [...[...new Array(firstDayOffSet)].map(()=> ({_id: '', date: ''})),...monthDates];
}

export default function App() {
  const [state, setState] = useState(() => fetchMonthDates());
  return (
    <div className="App">
      <ul className="calendar">
        <li className="header-item pd15">Sun</li>
        <li className="header-item pd15">Mon</li>
        <li className="header-item pd15">Tue</li>
        <li className="header-item pd15">Wed</li>
        <li className="header-item pd15">Thu</li>
        <li className="header-item pd15">Fri</li>
        <li className="header-item pd15">Sat</li>
        {state.map((i) => (
          <li className="pd15">{i.date}</li>
        ))}
      </ul>
    </div>
  );
}

// styles.css
.App {
  font-family: sans-serif;
}
ul {
  list-style: none;
}

.pd15 {
  padding: 5px;
  text-align: center;
}

.calendar {
  display: grid;
  grid-template-columns: auto auto auto auto auto auto auto;
  grid-template-rows: auto;
  border-bottom: 1px solid #eeeeee;
  border-top: 1px solid #eeeeee;
}

正しく見えるようにいくつかのスタイルを設定しましたが、必要ない場合は無視してください。

9 月の結果は次のとおりです。

1

なぜ初歩的なのでしょうか??

– user944513

2020 年 9 月 5 日 2:39

総合生活情報サイト - OKWAVES
総合生活情報サイト - OKWAVES
生活総合情報サイトokwaves(オールアバウト)。その道のプロ(専門家)が、日常生活をより豊かに快適にするノウハウから業界の最新動向、読み物コラムまで、多彩なコンテンツを発信。