我正在开发一个应用程序,其中有一个场景,无论我选择什么时间,下一部分都是从时间字符串中减去1分钟,然后将新时间(以分钟为单位)添加到列表中。 例如,这是我到目前为止的代码:
viewHolder.mCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
Date date = (Date) mtablayoutCourtDetailsAvailability.getTabAt(mtablayoutCourtDetailsAvailability.getSelectedTabPosition()).getTag();
String key = new SimpleDateFormat("dd-MM-yyyy", Locale.ENGLISH).format(date);
List<String> stringList = stringListMap.get(key);
if (isChecked)
{
stringList.add(buttonView.getText().toString());
}
else
{
stringList.remove(buttonView.getText().toString());
}
stringListMap.put(key, stringList);
}
});
现在在此代码中,下面的行指的是用户选择的时间
buttonView.getText().toString()
时隙可以这样使用:“ 09:00 AM-10:00 AM” 因此,每当选中任何广告位时,buttonView中都会有一些广告位文本被添加到列表中。但是,我想从“-”之后的时间中减去1分钟,即如果用户选择“ 09:00 AM-10:00 AM”,那么将添加到stringList中的新时间必须为“ 09:00 AM- 09:59 AM”。 不幸的是,由于我是新手,所以我无法实现这一目标。我可以使用以下代码获得“-”之后的第二个时隙值
String[] namesList = buttonView.getText().toString().split("-");
String partbefore= namesList[0];
String partafter= namesList[1];
partafter将包含10:00 AM,我应从中减去1分钟后更改为09:59 AM。我该如何实现?请帮助
答案 0 :(得分:1)
使用此代码获取。将原始时间设置为您的要求
try {
String original_time = "2018-11-11 11:02 am", time_required;
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm a");
SimpleDateFormat localDateFormat = new SimpleDateFormat("HH:mm");
Date date;
Calendar cal = Calendar.getInstance();
date = dateFormat.parse(original_time);
time_required = localDateFormat.format(date);
cal.setTime(date);
cal.add(Calendar.MINUTE, -1);
time_required = localDateFormat.format(cal.getTime());
} catch (Exception ex) {
Toast.makeText(this, ""+ex.getMessage(), Toast.LENGTH_SHORT).show();
}