如何从java中的长值中获取12小时格式的时间
我有一个长值,其值如下所示 e、 g 我需要一个智能的方式来转换上述类型的值,并获得时间为10:00AM和01:37PM的字符串格式 有人能告诉我怎么做吗?代码-如何从java中的长值中获取12小时格式的时间,java,string,long-integer,Java,String,Long Integer,我有一个长值,其值如下所示 e、 g 我需要一个智能的方式来转换上述类型的值,并获得时间为10:00AM和01:37PM的字符串格式 有人能告诉我怎么做吗?代码- Long timeInLong = 1000l; SimpleDateFormat dateFormat = new SimpleDateFormat("HHmm"); Date date = dateFormat.parse(Long.toString(timeInLong)); System.out.println(new Sim
Long timeInLong = 1000l;
SimpleDateFormat dateFormat = new SimpleDateFormat("HHmm");
Date date = dateFormat.parse(Long.toString(timeInLong));
System.out.println(new SimpleDateFormat("hh:mm a").format(date));
结果-
上午10:00
这太容易了,但是:
int hours = timeInLong / 100;
int minutes = timeInLong % 100;
boolean isPM = false;
if (hours > 12) {
isPM = true
}
if (hours > 13) {
hours -= 12;
}
String result = String.format("%02d:%02d %s", hours, minutes, (isPM ? "PM" : "AM"));
我错过什么了吗?试试:
SimpleDateFormat readerFormat = "HHmm";
SimpleDateFormat writerFormat = "hh:mma";
Date date = readerFormat.parse(Long.toString(timeInLong));
String toPrint = writerFormat.format(date);
我会这样做:
SimpleDateFormat formatA = new SimpleDateFormat("hhmm");
SimpleDateFormat formatB = new SimpleDateFormat("hh:mm a");
Date intermediate = formatA.parse(String.valueOf(1337));
String result = formatB.format(intermediate);
如果要避免SimpleDataFormat导入,请选择高效的oneliner:
String toTimeString(long time) {
return ((time < 1300) ? time / 100 : time / 100 - 12)
+ ":" + time % 100
+ ((time < 1200) ? " AM" : " PM");
}
好的,这看起来比我的解决方案好一些:第二个格式字符串应该是hh:mm a,而不是hh:mm a-注意hh是12小时时钟,hh是24小时时钟。long值代表什么?前两位是小时,后两位是分钟?那你怎么代表上午7:45?为什么要用long呢?但是如果你像这样表示时间,那么所有>1200的都是下午,剩下的是上午100给你几分钟;/100小时给你时间。对于PM时间,在计算小时和分钟之前扣除1200
String toTimeString(long time) {
return ((time < 1300) ? time / 100 : time / 100 - 12)
+ ":" + time % 100
+ ((time < 1200) ? " AM" : " PM");
}
int timeInLong = 1337;
Calendar c = Calendar.getInstance();
c.set(Calendar.MINUTE, timeInLong % 100);
c.set(Calendar.HOUR_OF_DAY, timeInLong / 100);
System.out.println(new SimpleDateFormat("HH:mm a", Locale.US).format(c.getTime()));