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

如何解析字符串中的时分时间?如何将24小时制转为带AM/PM的12小时制?

时间解析与格式化解决方案

嘿,针对你的两个时间处理问题,我整理了直接实用的方案,尤其是你提到的从MaterialDateTimePicker获取整数参数转12小时制的需求,完全可以不用依赖Date/Calendar对象:

1. 从字符串中解析时、分信息

如果你的时间字符串是HH:mm格式(比如"01:20"、"21:20"),推荐用Java 8+的DateTimeFormatter(线程安全,比旧的SimpleDateFormat更可靠),示例代码如下:

// Java 8+ 实现
String timeString = "21:20";
LocalTime localTime = LocalTime.parse(timeString, DateTimeFormatter.ofPattern("HH:mm"));

int hour = localTime.getHour(); // 输出21
int minute = localTime.getMinute(); // 输出20

如果需要兼容Java 8之前的版本,可以用SimpleDateFormat:

String timeString = "01:20";
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
Date date = sdf.parse(timeString);

Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int hour = calendar.get(Calendar.HOUR_OF_DAY); // 输出1
int minute = calendar.get(Calendar.MINUTE); // 输出20

2. 将hourOfDay、minute转换为12小时制带AM/PM的格式

既然你是从TimePickerDialog拿到hourOfDay(24小时制整数)和minute参数,直接通过整数逻辑和字符串格式化就能搞定,完全不需要日期类,步骤如下:

  • 判断AM/PM:hourOfDay < 12为AM,否则为PM
  • 转换12小时制小时:0点转12,12点保持12,其余用hourOfDay % 12
  • 分钟补零:确保分钟始终是两位数字(比如5分钟显示为"05")

Java 示例代码

// 从TimePickerDialog获取的参数
int hourOfDay = 21;
int minute = 20;

// 确定AM/PM标识
String amPm = hourOfDay < 12 ? "AM" : "PM";

// 转换为12小时制小时
int twelveHour = hourOfDay == 0 ? 12 : (hourOfDay > 12 ? hourOfDay - 12 : hourOfDay);

// 格式化分钟为两位数字
String formattedMinute = String.format("%02d", minute);

// 拼接最终结果
String friendlyTime = String.format("%d:%s%s", twelveHour, formattedMinute, amPm);
// 输出:9:20PM

// 如果需要小时也补零(比如09:20PM),把%d改成%02d:
// String friendlyTime = String.format("%02d:%s%s", twelveHour, formattedMinute, amPm);

Kotlin 示例代码(如果你用的是Kotlin开发)

// 从TimePickerDialog获取的参数
val hourOfDay = 0 // 对应12点
val minute = 15

val amPm = if (hourOfDay < 12) "AM" else "PM"
val twelveHour = when(hourOfDay) {
    0 -> 12
    12 -> 12
    else -> hourOfDay % 12
}
val formattedMinute = minute.toString().padStart(2, '0')

val friendlyTime = "$twelveHour:$formattedMinute$amPm"
// 输出:12:15AM

这个方案完全基于基础的整数运算和字符串处理,轻量且适配你的场景,不需要引入额外的日期类依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:38:21