我有两个包含
的int变量Int hour=13,minute=8;
我想将它们转换为13:08:00.0000000
standard
这样做的方式是什么,以及用这个字符串制作时间对象是什么?
最终我会将该时间对象转换回字符串以供使用,但我想标准化字符串。
答案 0 :(得分:2)
您可以使用Java的日历或日期对象。我建议使用JodaTime,非常强大且易于使用。
使用JodaTime
DateTime dt = new DateTime().withHourOfDay(hour).withMinuteOfHour(minute);
DateTimeFormatter fmt = DateTimeFormat.forPattern("HH:mm:ss.SSS");
String dateString = fmt.print(dt);
答案 1 :(得分:1)
可能不是最聪明的方式,但它应该有效。您可以将小时和分钟更改为String,然后使用SimpleDateFormat对其进行格式化:
String originalString = new Integer(hour).toString()+":"+new Integer(minute).toString()+":00.000000";
Date date = new SimpleDateFormat("HH:mm:ss").parse(originalString);
String newString = new SimpleDateFormat("HH:mm:ss").format(date);
请参阅this
答案 2 :(得分:1)
"标准"这是一个非常抽象的概念,特别是在计算方面,甚至更多的是在Date时间,而且我已经看到人们在做各种疯狂的事情,我会回答我认为是处理它的最佳方式。
<强>操纵强>
对于运行时处理时间内的一般操作,您应使用Calendar
对象,使用静态Calender.getInstance()
或使用 GregorianCalendar
<直接实例化new
/ strong>即可。还有其他几个处理相同问题的类,如Time
或Date
,但所有这些类都有限或不再推荐。
使用此类,您可以使用比较,转换,设置值等。
:
要在屏幕上设置Calendar
的表示形式(字符串),您可以使用DateFormat
或SimpleDateFormat
。通过调用DateFormat.format(calendar.getTime());
保存/恢复强>
最后但并非最不重要的是,如果要保存此值(在SharedPreferences,SQL数据库或任何地方),则应使用long
作为UNIX EPOCH。自1970年1月1日以来的毫秒数。要在运行时获取当前值,您可以使用System.currentTimeMillis()
或从Calendar
设置/提取就像Calendar.getTimeInMillis()
Calendar.setTimeInMillis(long milliseconds)