Java 从int值生成时间对象

Java 从int值生成时间对象,java,android,Java,Android,我有两个int变量,包含 Int hour=13,minute=8; 我想将它们转换为类似于13:08:00.0000000 标准的方法是什么,用这个字符串来创建时间对象 最终,我会将该时间对象转换回字符串以供使用,但我想标准化该字符串。您可以使用Java的日历或日期对象。我建议使用,非常强大和易于使用 与乔达蒂姆 DateTime dt = new DateTime().withHourOfDay(hour).withMinuteOfHour(minute); DateTimeFormatt

我有两个int变量,包含

Int hour=13,minute=8;
我想将它们转换为类似于
13:08:00.0000000

标准的
方法是什么,用这个字符串来创建时间对象


最终,我会将该时间对象转换回字符串以供使用,但我想标准化该字符串。

您可以使用Java的日历或日期对象。我建议使用,非常强大和易于使用

与乔达蒂姆

DateTime dt = new DateTime().withHourOfDay(hour).withMinuteOfHour(minute);
DateTimeFormatter fmt = DateTimeFormat.forPattern("HH:mm:ss.SSS");
String dateString = fmt.print(dt);

您可以使用Java的日历日期对象。我建议使用,非常强大和易于使用

与乔达蒂姆

DateTime dt = new DateTime().withHourOfDay(hour).withMinuteOfHour(minute);
DateTimeFormatter fmt = DateTimeFormat.forPattern("HH:mm:ss.SSS");
String dateString = fmt.print(dt);

也许这不是最聪明的方法,但它应该会起作用。您可以将小时和分钟更改为字符串,然后使用SimpleDataFormat对其进行格式化:

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);

请参见

可能不是最聪明的方法,但它应该会起作用。您可以将小时和分钟更改为字符串,然后使用SimpleDataFormat对其进行格式化:

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);
参见

“标准”是一个非常抽象的概念,特别是在计算领域,更是在日期时间方面,我见过人们做各种疯狂的事情,我将回答我认为最好的处理方法

操作:

对于运行时处理时间期间的常规操作,您应该使用对象,或者使用静态
日历.getInstance()
,或者使用
新建
直接实例化
GregorianCalendar
。还有其他几个类处理相同的问题,如
Time
Date
,但它们都是有限的,或者不再推荐。 通过这个类,您可以使用它来比较、转换、设置值等

屏幕显示/格式:

要在屏幕上格式化
日历的表示形式(字符串),可以使用或。它们将通过调用
DateFormat.format(calendar.getTime()),使您需要在屏幕上显示的可读值成为人类可读的值

保存/还原:

最后但并非最不重要的一点是,如果要保存此值(在SharedReferences、SQL数据库或任何地方),则应使用
long
作为UNIX文件。自1970年1月1日以来的毫秒数。要在运行时获取当前值,您可以使用System.currentTimeMillis()
或从
日历中设置/提取
日历一样简单。getTimeInMillis()
日历。setTimeInMillis(长毫秒)
“标准”是一个非常抽象的概念,特别是在计算中,甚至在日期时间方面,我见过人们做各种疯狂的事情,我会回答我认为最好的解决方法

操作:

对于运行时处理时间期间的常规操作,您应该使用对象,或者使用静态
日历.getInstance()
,或者使用
新建
直接实例化
GregorianCalendar
。还有其他几个类处理相同的问题,如
Time
Date
,但它们都是有限的,或者不再推荐。 通过这个类,您可以使用它来比较、转换、设置值等

屏幕显示/格式:

要在屏幕上格式化
日历的表示形式(字符串),可以使用或。它们将通过调用
DateFormat.format(calendar.getTime()),使您需要在屏幕上显示的可读值成为人类可读的值

保存/还原:


最后但并非最不重要的一点是,如果要保存此值(在SharedReferences、SQL数据库或任何地方),则应使用
long
作为UNIX文件。自1970年1月1日以来的毫秒数。要在运行时获取当前值,您可以使用
System.currentTimeMillis()
或从
日历中设置/提取
日历一样简单;同一位作者的优点是,它“准备”您使用Java8的日期/时间API(JSR310;threetenbp是“310 BackPort”),但他不知道该库。谢谢事实上,如果可以的话,用3TENBP代替Joda时间;同一位作者的优点是,它“准备”您使用Java8的日期/时间API(JSR310;threetenbp是“310 BackPort”),但他不知道该库。谢谢