【问题标题】:Android: Calc duration of event from two stringsAndroid:从两个字符串计算事件的持续时间
【发布时间】:2019-11-15 07:50:09
【问题描述】:

所以我有一个时间戳,例如这个 =1570312800 并且来源以字符串格式为我提供了开始时间和结束时间,所以假设它基本上是从 18:00 到 01:00(下午 6 点到凌晨 1 点) 我想计算 2 个字符串之间的差异(5 小时),将其转换为毫秒并将其添加到时间戳中。 让我遇到麻烦的是从 STRING 转换为 MILLISECONDS。

哪种方式最干净?

示例代码:

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

【问题讨论】:

  • Long.parseString(String timeStamp) - 应该工作不是吗?
  • 它给了我一个:ava.lang.NumberFormatException: For input string: "22:00" 它是 Long.parseLong(String)

标签: java android datetime timestamp


【解决方案1】:

解决此问题的一种方法是将字符串解析为SimpleDateFormat,如下所示:

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

【讨论】:

  • 是的,但是,如果我只解析像“20:00”或“18:00”这样的时间,它会给我一些奇怪的东西,而不是真正的毫秒时间
猜你喜欢
  • 1970-01-01
  • 2019-07-21
  • 1970-01-01
  • 2015-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-04
  • 1970-01-01
相关资源
最近更新 更多