您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

12345678910111213141516171819202122232425262728293031323334353637
  1. import type { Dayjs } from 'dayjs'
  2. import dayjs from 'dayjs'
  3. import utc from 'dayjs/plugin/utc'
  4. import timezone from 'dayjs/plugin/timezone'
  5. dayjs.extend(utc)
  6. dayjs.extend(timezone)
  7. export const timeOfDayToDayjs = (timeOfDay: number): Dayjs => {
  8. const hours = Math.floor(timeOfDay / 3600)
  9. const minutes = (timeOfDay - hours * 3600) / 60
  10. const res = dayjs().startOf('day').hour(hours).minute(minutes)
  11. return res
  12. }
  13. export const convertLocalSecondsToUTCDaySeconds = (secondsInDay: number, localTimezone: string): number => {
  14. const localDayStart = dayjs().tz(localTimezone).startOf('day')
  15. const localTargetTime = localDayStart.add(secondsInDay, 'second')
  16. const utcTargetTime = localTargetTime.utc()
  17. const utcDayStart = utcTargetTime.startOf('day')
  18. const secondsFromUTCMidnight = utcTargetTime.diff(utcDayStart, 'second')
  19. return secondsFromUTCMidnight
  20. }
  21. export const dayjsToTimeOfDay = (date?: Dayjs): number => {
  22. if (!date) return 0
  23. return date.hour() * 3600 + date.minute() * 60
  24. }
  25. export const convertUTCDaySecondsToLocalSeconds = (utcDaySeconds: number, localTimezone: string): number => {
  26. const utcDayStart = dayjs().utc().startOf('day')
  27. const utcTargetTime = utcDayStart.add(utcDaySeconds, 'second')
  28. const localTargetTime = utcTargetTime.tz(localTimezone)
  29. const localDayStart = localTargetTime.startOf('day')
  30. const secondsInLocalDay = localTargetTime.diff(localDayStart, 'second')
  31. return secondsInLocalDay
  32. }