Time.jsx 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import { useState } from "react";
  2. import { useEffect } from "react";
  3. import { TimeWrapper } from "./Time.style"
  4. export function convert(timestamp){
  5. const monthNames = ["January", "February", "March", "April", "May", "June",
  6. "July", "August", "September", "October", "November", "December"
  7. ];
  8. let dateOfTimestamp = new Date(+timestamp);
  9. const getTime = () => {
  10. let hours = dateOfTimestamp .getHours();
  11. let minutes = dateOfTimestamp .getMinutes();
  12. return `${hours < 10 ? '0' + hours : hours}:${minutes < 10 ? '0' + minutes : minutes}`
  13. }
  14. const getFullDate = () => {
  15. let date = dateOfTimestamp.getDate();
  16. let month = dateOfTimestamp.getMonth() + 1;
  17. let year = dateOfTimestamp.getFullYear();
  18. return `${date < 10 ? '0' + date : date}.${month < 10 ? '0' + month : month}.${year}`
  19. }
  20. const getDateMonthName = () => {
  21. let date = dateOfTimestamp.getDate();
  22. let month = dateOfTimestamp.getMonth();
  23. let year = dateOfTimestamp.getFullYear();
  24. return `${date} ${monthNames[month]} ${year}`
  25. }
  26. return {
  27. getTime, getFullDate, getDateMonthName
  28. }
  29. }
  30. export const TimeLastMessage = ({isActive, timestamp}) => {
  31. const [method, setMethod] = useState('');
  32. useEffect(() => {
  33. (new Date().getDate() != new Date(timestamp).getDate()) || (Date.now() - timestamp > 86400000) ?
  34. setMethod('getFullDate')
  35. :
  36. setMethod('getTime')
  37. }, [timestamp])
  38. return (timestamp) ?
  39. <TimeWrapper isActive={isActive}>{method && convert(timestamp)[method]()}</TimeWrapper>
  40. :
  41. <></>
  42. }