You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React JS中如何从当前日期提取时间并转换24小时制为12小时制

实现方案

你无需手动拆分原始日期字符串提取时间,直接基于你存储的Date对象处理即可,两种常用实现方案如下:

方案1:使用内置国际化API(代码最简)

直接调用Date实例的toLocaleTimeString方法,通过配置参数直接生成符合要求的格式:

// 工具函数:传入Date对象,返回12小时制时间字符串(格式H:MM:SS)
const get12HourTime = (date) => {
  return date.toLocaleTimeString('en-US', {
    hour: 'numeric',
    minute: '2-digit',
    second: '2-digit',
    hour12: true
  }).replace(/\s[AP]M$/, ''); // 不需要AM/PM后缀保留这行,需要的话删除即可
};

如果你的输入是原始日期字符串,先转成Date对象再调用即可:

const rawDateStr = 'Mon Oct 04 2021 17:13:49 GMT+0530 (India Standard Time)';
const time = get12HourTime(new Date(rawDateStr)); // 输出结果:5:13:49

方案2:手动计算拼接(灵活性更高)

如果需要自定义格式规则,可以手动取时间字段拼接:

const get12HourTime = (date) => {
  let hour = date.getHours();
  const minute = String(date.getMinutes()).padStart(2, '0');
  const second = String(date.getSeconds()).padStart(2, '0');
  // 处理12小时制转换,0点转为12,其余时间模12即可
  hour = hour % 12 || 12;
  return `${hour}:${minute}:${second}`;
};

结合你现有代码的使用示例

你可以在取值的时候实时转换,也可以在存储的时候直接保存格式化后的结果:

import { useState } from 'react';

// 上面选一种工具函数放在这里
const get12HourTime = (date) => {
  // 函数实现
};

const YourComponent = () => {
  const [timerState, setTimerState] = useState({});

  const handleStart = () => {
    const now = new Date();
    setTimerState({ 
      ...timerState, 
      start: now,
      // 如果需要直接存格式化后的结果可以加这行
      startTimeStr: get12HourTime(now)
    });
    
    // 取值时调用示例
    console.log(get12HourTime(now)); // 输出对应12小时制时间
  };

  // 渲染逻辑
  return <div>{timerState.start && get12HourTime(timerState.start)}</div>
};

内容的提问来源于stack exchange,提问作者vivek kn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 02:18:01