Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android:从两个字符串计算事件的持续时间_Java_Android_Datetime_Timestamp - Fatal编程技术网

Java Android:从两个字符串计算事件的持续时间

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

我有一个时间戳,比如这个=1570312800 源代码还以字符串形式给出了开始时间和结束时间,所以假设它基本上是从18:00到01:00(下午6点到凌晨1点) 我想计算两个字符串之间的差异(5小时),将其转换为毫秒,并将其添加到时间戳中。 让我陷入麻烦的是从字符串到毫秒的转换

哪种方式最干净

示例代码:

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”这样的时间,它会给我一些奇怪的东西,而不是真正的毫秒时间