如何将日历对象中的时间拆分为小时和分钟以传入 Bundle?
How do I split time in a calendar object into hours and minutes to pass in a Bundle?
我正在尝试将日历对象中的小时和分钟传递给 TimePickerFragment。 Android Studio 在 "tcal.set..." 行给我以下错误消息:"Must be one of CALENDAR:...HOUR_OF_DAY, MINUTE..." 我在 Bundle 中有 "HOUR_OF_DAY and MINUTE" 的 get() 语句。关于我为什么会收到此错误以及如何解决的任何想法?
public class CardViewActivity extends AppCompatActivity {
private EditText gEditText;
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.view);
gEditText = (EditText) findViewById(R.id.GEditText);
}
...
Calendar tcal = Calendar.getInstance();
String timeStr = gEditText.getText().toString().replace(" ", "");
String[]timeParts = timeStr.split(":");
**tcal.set(Integer.parseInt(timeParts[0]),Integer.parseInt(timeParts[1]));**
Bundle timebundle = new Bundle();
timebundle.putInt("hour", tcal.get(Calendar.HOUR_OF_DAY));
timebundle.putInt("minute", tcal.get(Calendar.MINUTE));
这非常适合拆分 DatePicker 的年、月和日:
Calendar c = Calendar.getInstance();
String dateStr = fListenerEditText.getText().toString().replace(" ","");
String[]dateParts = dateStr.split("/");
c.set(Integer.parseInt(dateParts[2]),Integer.parseInt(dateParts[0])-1,Integer.parseInt(dateParts[1]));
Bundle argsbundle = new Bundle();
argsbundle.putInt("year", c.get(Calendar.YEAR));
argsbundle.putInt("month", c.get(Calendar.MONTH));
argsbundle.putInt("day", c.get(Calendar.DAY_OF_MONTH));
根据 docs、
public void set(int field, int value)
将字段设置为给定值。
例如
calendar.set(Calendar.HOUR, 10);
calendar.set(Calendar.MINUTE, 29);
calendar.set(Calendar.SECOND, 22);
calender.set(Calendar.YEAR, 1997);
据我所知,您没有传递有效的第一个参数、字段,因此也没有传递错误。
这与设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 值的 3 个参数不同。
因此,如果您使用
calender.set(2000, 1, 30)
,它将年设置为 2000,月设置为一月,日设置为 30 日。
但是calender.set(int field, int value) 有不同的用途。如果你这样做
calender.set(Calendar.YEAR, 1997);
它会将年份设置为 1997。因此,这两种方法除了参数不同外,工作方式也不同。我希望你现在明白了:)
我正在尝试将日历对象中的小时和分钟传递给 TimePickerFragment。 Android Studio 在 "tcal.set..." 行给我以下错误消息:"Must be one of CALENDAR:...HOUR_OF_DAY, MINUTE..." 我在 Bundle 中有 "HOUR_OF_DAY and MINUTE" 的 get() 语句。关于我为什么会收到此错误以及如何解决的任何想法?
public class CardViewActivity extends AppCompatActivity {
private EditText gEditText;
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.view);
gEditText = (EditText) findViewById(R.id.GEditText);
}
...
Calendar tcal = Calendar.getInstance();
String timeStr = gEditText.getText().toString().replace(" ", "");
String[]timeParts = timeStr.split(":");
**tcal.set(Integer.parseInt(timeParts[0]),Integer.parseInt(timeParts[1]));**
Bundle timebundle = new Bundle();
timebundle.putInt("hour", tcal.get(Calendar.HOUR_OF_DAY));
timebundle.putInt("minute", tcal.get(Calendar.MINUTE));
这非常适合拆分 DatePicker 的年、月和日:
Calendar c = Calendar.getInstance();
String dateStr = fListenerEditText.getText().toString().replace(" ","");
String[]dateParts = dateStr.split("/");
c.set(Integer.parseInt(dateParts[2]),Integer.parseInt(dateParts[0])-1,Integer.parseInt(dateParts[1]));
Bundle argsbundle = new Bundle();
argsbundle.putInt("year", c.get(Calendar.YEAR));
argsbundle.putInt("month", c.get(Calendar.MONTH));
argsbundle.putInt("day", c.get(Calendar.DAY_OF_MONTH));
根据 docs、
public void set(int field, int value)
将字段设置为给定值。
例如
calendar.set(Calendar.HOUR, 10);
calendar.set(Calendar.MINUTE, 29);
calendar.set(Calendar.SECOND, 22);
calender.set(Calendar.YEAR, 1997);
据我所知,您没有传递有效的第一个参数、字段,因此也没有传递错误。
这与设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 值的 3 个参数不同。
因此,如果您使用
calender.set(2000, 1, 30)
,它将年设置为 2000,月设置为一月,日设置为 30 日。
但是calender.set(int field, int value) 有不同的用途。如果你这样做
calender.set(Calendar.YEAR, 1997);
它会将年份设置为 1997。因此,这两种方法除了参数不同外,工作方式也不同。我希望你现在明白了:)