字符串变量的时间格式

时间:2014-03-30 18:08:46

标签: java datetime timepicker

我正在使用SimpleDateFormat以格式获取时间。当我这样做时,我得到一个String变量格式。我想知道是否有一个内置的方法来分别从字符串变量获取小时和分钟?

SimpleDateFormat sdf = new SimpleDateFormat("hh:mm a");   
String time = sdf.format(calendar.getTime());

让我们说我的字符串格式为:上午12:34

我想把时间和分钟分开。我想在一个新变量中使用12和34。

我不想用这个:

  int hour = calendar.get(Calendar.HOUR_OF_DAY);

因为我只能在将其保存在SharedPreferences中时访问字符串变量。

4 个答案:

答案 0 :(得分:1)

您可以从calendar对象

获取它
int hour = calendar.get(Calendar.HOUR_OF_DAY);
int minute = calendar.get(Calendar.MINUTE);

答案 1 :(得分:1)

你可以告诉我们你回来的“时间”是什么时候?我认为,通过字符串操作,您可以解决这个问题。

答案 2 :(得分:1)

您可以从String中获取java.util.Date对象,在此处说明:Java string to date conversion

public static final String YOUR_FORMAT = "hh:mm a";

Date yourDateTime = new SimpleDateFormat(YOUR_FORMAT).parse(time);

Calendar cal = Calendar.getInstance();
cal.setTime(yourDateTime);
int hour = cal.get(Calendar.HOUR_OF_DAY);

其他方式是拆分字符串:

int hour = Integer.parseInt(time.split("\\:")[0]);

答案 3 :(得分:1)

我会将它转换回Date,使用相同的格式来获取此String。任何String操作都将是脆弱的。您应该将格式字符串保存在一个位置,因此每当您更改它时,您的代码仍然可以正常工作。

    //Get this one provided by dependency injection for example
    SimpleDateFormat sdf = new SimpleDateFormat("hh:mm a");
    String dateString = sdf.format(new Date());
    Date date = sdf.parse(dateString);
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);

    int hour = calendar.get(Calendar.HOUR_OF_DAY);
    int minute = calendar.get(Calendar.MINUTE);