在我的应用程序中,我希望将给定CDT格式的24小时字符串转换为CDT格式的12小时字符串,如何将给定的24小时格式字符串转换为12小时格式字符串??
答案 0 :(得分:56)
以下是使用AM和PM将24小时制转换为12小时的代码。如果您不想要AM / PM,那么只需将hh:mm a
替换为hh:mm
。
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String [] args) throws Exception {
try {
String _24HourTime = "22:15";
SimpleDateFormat _24HourSDF = new SimpleDateFormat("HH:mm");
SimpleDateFormat _12HourSDF = new SimpleDateFormat("hh:mm a");
Date _24HourDt = _24HourSDF.parse(_24HourTime);
System.out.println(_24HourDt);
System.out.println(_12HourSDF.format(_24HourDt));
} catch (Exception e) {
e.printStackTrace();
}
}
}
//OUTPUT WOULD BE
//Thu Jan 01 22:15:00 IST 1970
//10:15 PM
另一种解决方案:
System.out.println(hr%12 + ":" + min + " " + ((hr>=12) ? "PM" : "AM"));
答案 1 :(得分:54)
您可以尝试使用SimpleDateFormat
对象转换时间格式。
final String time = "23:15";
try {
final SimpleDateFormat sdf = new SimpleDateFormat("H:mm");
final Date dateObj = sdf.parse(time);
System.out.println(dateObj);
System.out.println(new SimpleDateFormat("K:mm").format(dateObj));
} catch (final ParseException e) {
e.printStackTrace();
}
这是SimpleDateFromat的javadoc link。
答案 2 :(得分:9)
在Java 8中,可以使用类java.time.LocalTime
在一行中完成。
代码示例:
String result = LocalTime.parse(time, DateTimeFormatter.ofPattern("HH:mm")).format(DateTimeFormatter.ofPattern("hh:mm a"));
对于早期的Android,请使用适用于ThreeTen-Backport项目中的Android的ThreeTenABP项目。请参阅How to use ThreeTenABP in Android Project。
答案 3 :(得分:4)
对于api版本较低的人, 在凌晨12:00或PM和min< 10
String time = ((hourOfDay > 12) ? hourOfDay % 12 : hourOfDay) + ":" + (minute < 10 ? ("0" + minute) : minute) + " " + ((hourOfDay >= 12) ? "PM" : "AM")
输出例如。 0:0 AM
12:00 PM
9:09 AM
感谢上面的@Lalit Jawale回答
答案 4 :(得分:1)
int n=2;
int result= n-12;
if (result>o) {
system.out.println(result+"pm");
} else {
system.out.prinln(result+"am");
}
如果您想从用户那里获取输入,您可以使用扫描仪希望这很简单 12时间:)
答案 5 :(得分:1)
如果您对K,K和H之间的差异感到好奇,h:
H小时(0-23)数字0 1 +
k小时(1-24)24号1 +
上午/下午的K小时(0-11)数字0 1 +
h上午/下午(1-12)小时数12 1 +
答案 6 :(得分:1)
// time is your string value i.e., 24 hour time
try {
final SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
final Date dateObj = sdf.parse(time);
time = new SimpleDateFormat("hh:mm aa").format(dateObj);
} catch (final ParseException e) {
e.printStackTrace();
}
带有(K:mm)的SimpleDateFormat工作正常,但在时间12:00 AM或12:00 PM无法正常工作
你可以使用上面的代码将24小时格式的12小时格式与AM / PM一起转换......它有效吗
答案 7 :(得分:1)
如果没有必要,我不喜欢使用像 SimpleDateFormat
这样的类。你只需要检查三个条件。以下是一些替代方案:
简单:
if(hour>11) {
suffix = "PM";
if(hour>12)
hour -= 12;
} else {
suffix = "AM";
if(hour==0)
hour = 12;
}
简短:
suffix = (hour>11) ? "PM" : "AM";
hour = (hour>12) ? hour-=12 : ((hour==0) ? 12 : hour);
结果:
00:00 = 12:00 AM, 01:00 = 01:00 AM, 02:00 = 02:00 AM, 03:00 = 03:00 AM, 04:00 = 04:00 AM, 05:00 = 05:00 AM, 06:00 = 06:00 AM, 07:00 = 07:00 AM, 08:00 = 08:00 AM, 09:00 = 09:00 AM, 10:00 = 10:00 AM, 11:00 = 11:00 AM, 12:00 = 12:00 PM, 13:00 = 01:00 PM, 14:00 = 02:00 PM, 15:00 = 03:00 PM, 16:00 = 04:00 PM, 17:00 = 05:00 PM, 18:00 = 06:00 PM, 19:00 = 07:00 PM, 20:00 = 08:00 PM, 21:00 = 09:00 PM, 22:00 = 10:00 PM, 23:00 = 11:00 PM
答案 8 :(得分:0)
请按照以下代码:
制定通用方法并从您需要的地方致电:
改变时间的常用方法:
public static String parseTime(String date, String inFormat, String outFormat) {
try {
Date date1 = new SimpleDateFormat(inFormat, Locale.getDefault()).parse(date);
SimpleDateFormat dateFormat = new SimpleDateFormat(outFormat, Locale.getDefault());
return dateFormat.format(date1);
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
常规方法:
public static final String SERVER_TIME_RESOURCES_FORMAT = "HH:mm:ss";
public static final String SERVER_TIME_FORMAT = "HH:mm:ss.SSS";
根据需要致电:
CommonMethods.parseTime(//your date, Constants.SERVER_TIME_RESOURCES_FORMAT, Constants.LOCAL_TIME_FORMAT);
答案 9 :(得分:0)
这里我使用简单的数学。 12小时= 1 + currentHours(24小时)-13。 对于AM和PM,请使用简单的ifelse条件,例如,如果currentHours(24Hours)<= 12,则设置“ AM”或“ PM” 这里AMPM&Time是String变量。 CurHour是整数。
LocalDateTime LDT = LocalDateTime.now();
CurHour = LDT.getHour();
if(CurHour <=12) {
AMPM = "AM";
}else {
AMPM = "PM";
}
Hours = 1+CurHour-13;
Time = Hours+":"+LDT.getMinute()+":"+LDT.getSecond()+" "+AMPM;
答案 10 :(得分:0)
这是我的解决方法:
static void client() throws IOException, ClassNotFoundException {
Socket client = new Socket("127.0.0.1", 9876);
oos = new ObjectOutputStream(client.getOutputStream());
oos.writeObject("Connected");
connected = true;
game.add(otherPlayer);
while (true) {
ois = new ObjectInputStream(client.getInputStream());
String message = (String) ois.readObject();
otherX = Character.digit(message.charAt(0), 10);
otherX *= 10;
otherX += Character.digit(message.charAt(1), 10);
otherX *= 10;
otherX += Character.digit(message.charAt(2), 10);
otherY = Character.digit(message.charAt(3), 10);
otherY *= 10;
otherY += Character.digit(message.charAt(4), 10);
otherY *= 10;
otherY += Character.digit(message.charAt(5), 10);
otherPlayer.setBounds(otherX, otherY, 50, 50);
oos.flush();
}
}
答案 11 :(得分:0)
public static void convert24HourTimeInto12Hour() {
try {
String[] dateTime = getCurrentDateAndTime("yyyy-MM-dd HH:mm:ss").split(" ");
System.out.println("datePart::: "+dateTime[0]);
System.out.println("timePart::: "+dateTime[1]);
SimpleDateFormat 24HoursFormat = new SimpleDateFormat
SimpleDateFormat 12HoursFormat = new SimpleDateFormat
Date 24Hours = 24HoursFormat.parse(dateTime[1]);
System.out.println(24Hours);
System.out.println(12HoursFormat.format(24Hours));
} catch (Exception e) {
e.printStackTrace();
}
}
答案 12 :(得分:0)
要使用AM和PM将任何日期日期转换为12小时格式,可以使用
new SimpleDateFormat("dd MMM yyyy KK:mm:ss a").format(date)
此处KK表示00-12,而AM和PM表示
答案 13 :(得分:0)
这是我使用过的,它将上午 00:10 转换为上午 12:00,其余时间也可以正常工作。
int hourOfDay=Integer.parseInt(form24hrs);//parsing 24 hours format string value of hour to int
int minute=Integer.parseInt(form24min);//parsing 24 hours format string value of minute to int
String time = ((hourOfDay > 12) ? hourOfDay % 12 : ((hourOfDay==0)?"12":hourOfDay)) + ":" + (minute < 10 ? ("0" + minute) : minute) + " " + ((hourOfDay >= 12) ? "pm" : "am");