【问题标题】:Get Hour and Minute from timestamp in Java [closed]从Java中的时间戳获取小时和分钟[关闭]
【发布时间】:2016-03-23 17:27:00
【问题描述】:

我尝试从下面的时间戳中提取小时 + 分钟。我试过这个:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
Date date = sdf.parse("2016-03-23 18:08:59");

SimpleDateFormat sdf2 = new SimpleDateFormat("hh:mm");
sdf2.setTimeZone(TimeZone.getTimeZone("UTC"));
String dateStr = sdf2.format(date);

但我在这一行得到一个“未处理的异常:Java.text.parseException”:

日期日期 = sdf.parse(myTimeStampString);

谁能帮帮我?

【问题讨论】:

  • 变量 myTimeStampString 的值是多少?
  • @user1917363 它已经在问题中了
  • 就像我在问题的第一行中提到的那样。
  • 它对我来说似乎工作得很好,
  • 什么是IST?是印度、以色列还是爱尔兰?

标签: java timestamp


【解决方案1】:

虽然从你的问题表达方式不清楚,但唯一合理的解释是没有抛出异常,但你指的是编译器错误。

ParseException 是检查异常,必须由你的源代码处理,否则无法编译。我不确定您使用的是哪个编译器,Oracle JDK 中的 Java 编译器给出了更详细的错误描述:

错误:未报告的异常 ParseException;必须被抓住或宣布 被扔掉

【讨论】:

  • 啊,这就解释了为什么他们的代码不能正常工作,因为是的,它已经正常工作了。它只需要放在一个 try 块中。
  • 但是,时间仍会转换为 12 小时制。要解决这个问题,他们只需将 HH 更改为 kk 以便输入格式为 24 小时制。
  • @4castle 不确定你的意思。问题是关于 ParseException 而不是关于 12/24 小时差异的任何问题。 HH 和 kk 模式都基于 24 小时,HH 将小时格式化为 0-23,kk 格式化为 1-24。
【解决方案2】:

如果您只想获取具有"18:08" 的字符串部分并且不想根据时区进行调整,那么您可以使用String#substring(start, end) 来提取字符串的该部分。

String fullTime = "2016-03-23 18:08:59";
String timeStr = fullTime.substring(11, 16); //extract "HH:mm" from "yyyy-MM-dd HH:mm:ss"

如果您确实想根据时区进行调整,请添加try 块。

String fullTime = "2016-03-23 18:08:59";
DateFormat df1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"),
           df2 = new SimpleDateFormat("HH:mm");
df1.setTimeZone(TimeZone.getTimeZone("UTC"));
df2.setTimeZone(TimeZone.getTimeZone("IST"));
String timeStr = "";
try {
    timeStr = df2.format(df1.parse(fullTime)); //parse throws ParseException
} catch (ParseException e) { /* handle this */ }

此代码将顶部的变量作为输入,以便在调整时区后将timeStr 更改为"HH:mm" 的值。

【讨论】:

  • 我考虑过这个,但我认为这会是不好的风格或/和不安全的。
  • 如果您从日期对象或非用户输入的某个安全位置获取日期字符串,这并不是不安全的。您应该将 cmets 放入代码中,尽管它准确地描述了它在做什么。
  • 我已经更新了我的答案,以便它显示你如何在没有substring 的情况下做到这一点并调整你的代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
  • 2021-05-22
  • 2015-03-14
  • 2017-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多