2 votes

Remplacer a few seconds ago par just now dans moment.js

Comment supprimer quelques secondes auparavant et afficher à l'instant même sur moment.js Le moment.js montre il y a quelques secondes, je veux faire une personnalisation, pour montrer seulement maintenant jusqu'à 1 minute, mais dans d'autres cas, comme il y a deux minutes, je veux montrer il y a 2 minutes.

Example 0-59 seconds just now

import "./styles.css";
import { useEffect } from "react";
import moment from "moment";
export default function App() {
  moment.updateLocale("en", {
    relativeTime: {
      future: "in %s",
      past: "%s ago",
      s: " %ds",
      ss: "%d seconds",
      m: "%dm",
      mm: "%dm",
      h: "an h",
      hh: "%dh",
      d: "a day",
      dd: "%d days",
      w: "a week",
      ww: "%d weeks",
      M: "a month",
      MM: "%d months",
      y: "a year",
      yy: "%d years"
    }
  });
  const MINUTE_MS = 60000;

  useEffect(() => {
    const interval = setInterval(() => {
      console.log("Logs every minute");
      called();
    }, MINUTE_MS);

    return () => clearInterval(interval); // This represents the unmount function, in which you need to clear your interval to prevent memory leaks.
  }, []);
  const called = () => {
    var k = Date.now() - 5 * 1000;
    return k;
  };
  moment.locale("en");

  return (
    <div className="App">
      <div>{moment(called()).fromNow()}</div>
    </div>
  );
}

0voto

Johan Wentholt Points 2137

Vous pouvez définir s y ss a "just now" et changer les deux future y past dans une fonction qui ne fait pas de préfixe/suffixe si la chaîne passée est "just now" .

moment.updateLocale("en", {
  relativeTime: {
    future: (diff) => (diff == "just now" ? diff : `in ${diff}`),
    past: (diff) => (diff == "just now" ? diff : `${diff} ago`),
    s: "just now",
    ss: "just now"
  }
});

const _2_min_ago = moment().subtract(2, "minutes");
const _20_sec_ago = moment().subtract(20, "seconds");
const _20_sec_from_now = moment().add(20, "seconds");
const _2_min_from_now = moment().add(2, "minutes");

console.log(_2_min_ago.fromNow());
console.log(_20_sec_ago.fromNow());
console.log(_20_sec_from_now.fromNow());
console.log(_2_min_from_now.fromNow());

<script crossorigin src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X