Java Android:从两个字符串计算事件的持续时间
我有一个时间戳,比如这个=1570312800 源代码还以字符串形式给出了开始时间和结束时间,所以假设它基本上是从18:00到01:00(下午6点到凌晨1点) 我想计算两个字符串之间的差异(5小时),将其转换为毫秒,并将其添加到时间戳中。 让我陷入麻烦的是从字符串到毫秒的转换 哪种方式最干净 示例代码:Java Android:从两个字符串计算事件的持续时间,java,android,datetime,timestamp,Java,Android,Datetime,Timestamp,我有一个时间戳,比如这个=1570312800 源代码还以字符串形式给出了开始时间和结束时间,所以假设它基本上是从18:00到01:00(下午6点到凌晨1点) 我想计算两个字符串之间的差异(5小时),将其转换为毫秒,并将其添加到时间戳中。 让我陷入麻烦的是从字符串到毫秒的转换 哪种方式最干净 示例代码: Calendar c1 = Calendar.getInstance(android.icu.util.TimeZone.getTimeZone("UTC")); Calendar c2 = C
Calendar c1 = Calendar.getInstance(android.icu.util.TimeZone.getTimeZone("UTC"));
Calendar c2 = Calendar.getInstance(android.icu.util.TimeZone.getTimeZone("UTC"));
SimpleDateFormat sdf = new SimpleDateFormat("HHmm");
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
try
{
c1.setTime(sdf.parse("20:00"));
c2.setTime(sdf.parse("1:00"));
}
catch (ParseException e)
{
e.printStackTrace();
}
Log.d("TIME DIFFERENCE", String.valueOf(c2.getTimeInMillis()-c1.getTimeInMillis()));
一种方法是将字符串解析为
SimpleDataFormat
,如下所示:
Calendar c1 = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
c1.setTime(sdf.parse("20:00"));
System.out.println(c1.getTimeInMillis());
一种方法是将字符串解析为
SimpleDataFormat
,如下所示:
Calendar c1 = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
c1.setTime(sdf.parse("20:00"));
System.out.println(c1.getTimeInMillis());
Long.parseString(String timeStamp)
-应该可以工作,不是吗?它给我一个:ava.lang.NumberFormatException:输入字符串:“22:00”而且很长。parseLong(String)Long.parseString(String timeStamp)
-应该可以工作,不是吗?它给我一个:ava.lang.NumberFormatException:输入字符串:“22:00”而且很长。parseLong(String)是的,但是,如果我只解析像“20:00”或“18:00”这样的时间,它会给我一些奇怪的东西,而不是真正的毫秒时间是的,但是如果我只解析像“20:00”或“18:00”这样的时间,它会给我一些奇怪的东西,而不是真正的毫秒时间