字符串转换为时间(仅hh:mm)

时间:2017-12-27 03:17:21

标签: java android time simpledateformat time-format

我想要我的String" 10:10"以hh:mm而不是MM / dd / yyyy hh:mm:ss aa

的格式转换为时间
Date date;
SimpleDateFormat sdf;
sdf = new SimpleDateFormat("hh:mm");
try 
{
    date = sdf.parse(a.getString("time").toString());
    Log.d(TAG, "onCreate: "+date);
    Log.d(TAG, "onCreate: "+a.getString("time"));
}
 catch (ParseException e) {
    e.printStackTrace();
}

但我在我的logcat

中得到了这个
D/MTAG: onCreate: Thu Jan 01 10:00:00 GMT+05:00 1970
D/MTAG: onCreate: 10:00

3 个答案:

答案 0 :(得分:2)

    String timeString = "10:10";
    LocalTime time = LocalTime.parse(timeString);
    System.out.println(time);

打印

10:10
但是,我有点作弊。我阅读你的问题的方式,你要求一个日期时间对象,其格式为HH:mmLocalTime对象(在上面的代码段中使用)和Date(在您的代码中使用)都不能包含格式。将Date连接到字符串或打印LocalTime时得到的是对象的toString方法的结果,并且您无法更改此方法(仅在子类中,并且您不要不想那样。换句话说,当您需要特定格式时,需要在日期时间对象之外的字符串中使用该格式。

幸运的是,LocalTime.toString()产生了你想要的格式(只要秒和秒的分数为零;否则它们也会在字符串中)。

这适用于您的Android设备吗?它会。 LocalTime是一个JSR-310类,也称为java.time,是近四年前,即2014年初引入的现代Java日期和时间API.JSR-310已经向后移植到Java 6和7中ThreeTen Backport,反过来又适用于ThreeTenABP中的Android。因此,获取ThreeTenABP,将其添加到您的项目中,并开始享受与过时的日期和时间类相比更好的工作。

PS问题中的格式模式字符串中存在一个错误:小写hh表示AM或PM从1到12的小时,当小时数为10时效果很好,但并非总是如此。我确信在0到23区间你想要大写HH一天中的小时。当我用12:12字符串运行你的代码时,我会得到Thu Jan 01 00:12:00 CET 1970小时数是0,而不是12小时。

链接

答案 1 :(得分:1)

  

日期和时间格式由日期和时间模式字符串指定。   在日期和时间模式字符串中,来自' A'的未加引号的字母到了' Z'   并且来自'到' z'被解释为代表的模式字母   日期或时间字符串的组成部分。可以使用引用文本   单引号(')以避免解释。 "''"代表单一   引用。不解释所有其他字符;他们只是简单地复制了   在格式化期间输入到输出字符串或与输入匹配   解析时的字符串。

Read Document

试试这个

  DateFormat aFormatter = new SimpleDateFormat("HH:mm");
  Date dt = aFormatter.parse("10:10");
  Calendar aCalander = Calendar.getInstance();
  aCalander.setTime(dt);
  int hour = aCalander.get(Calendar.HOUR);
  int minute = aCalander.get(Calendar.MINUTE);

答案 2 :(得分:1)

创建日期时,格式为" Thu Jan 01 10:00:00 GMT + 05:00 1970"正如你在输出中提到的那样。因此,如果您想显示和使用日期格式,您应该使用SimpleDateFormat中的格式方法。我希望以下代码可以帮助您更好地理解。

//formatting date in Java using SimpleDateFormat
String date_s = "10:10"; 
SimpleDateFormat dt = new SimpleDateFormat("hh:mm"); 
Date date = dt.parse(date_s); 

System.out.println(date);   
System.out.println(dt.format(date));