我正在尝试遵循此post但我不确定如何以iso8601格式存储我的数据,因为我没有得到任何"秒"从timepicker界面输入,我可以追加" 0000"到字符串生成器的末尾?
该帖子还使用SimpleDateFormat(),仅支持API 24。我的最低API级别是19.它是否有相同的功能?
Java代码:
public void saveExam() {
date = (DatePicker)findViewById(R.id.examDate);
Integer day = date.getDayOfMonth();
Integer month = date.getMonth();
Integer year = date.getYear();
time = (TimePicker)findViewById(R.id.examTime);
Integer hour, minutes;
if (Build.VERSION.SDK_INT >= 23 ) {
hour = time.getHour();
minutes = time.getMinute();
} else {
hour = time.getCurrentHour();
minutes = time.getCurrentMinute();
}
StringBuilder temp = new StringBuilder();
temp.append(year.toString()).append("-").append(month.toString()).append("-").append(day.toString())
.append(" ").append(hour).append(":").append(minutes);
Toast.makeText(add_exam.this, temp, Toast.LENGTH_LONG).show();
}
有人也可以向我解释这部分代码,这是我第一次看到标志:
if (date != null) {
long when = date.getTime();
int flags = 0;
flags |= android.text.format.DateUtils.FORMAT_SHOW_TIME;
flags |= android.text.format.DateUtils.FORMAT_SHOW_DATE;
flags |= android.text.format.DateUtils.FORMAT_ABBREV_MONTH;
flags |= android.text.format.DateUtils.FORMAT_SHOW_YEAR;
finalDateTime = android.text.format.DateUtils.formatDateTime(context,
when + TimeZone.getDefault().getOffset(when), flags);
答案 0 :(得分:0)
标志用于设置格式输出,传入DateUtils.formateDateTime
方法的时间以毫秒为单位。它们代表位掩码的一部分。 Here您可以在DateUtils
中看到用于格式化日期的不同标志值。
例如:
DateUtils.FORMAT_SHOW_TIME = 1; // 1 binary representation
DateUtils.FORMAT_SHOW_WEEKDAY = 2; // 10 binary representation
DateUtils.FORMAT_SHOW_YEAR = 4; // 100 binary representation
...
如果你有3
,则二进制文件为11
,这意味着DateUtils.FORMAT_SHOW_TIME
和DateUtils.FORMAT_SHOW_WEEKDAY
将被应用,你会得到类似这样的结果:“11 :周六下午4点“。
如果您有5
,则二进制文件为101
,这意味着将应用DateUtils.FORMAT_SHOW_TIME
和DateUtils.FORMAT_SHOW_YEAR
。但不是像“2016年下午11:04”这样的东西,你将有“晚上11:04”。因此,据我所知,组合标志时会发生一些冲突。
基本上,有下一个组合标志和相应输出的例子:
DateUtils.formatDateTime(this, System.currentTimeMillis(), DateUtils.FORMAT_SHOW_TIME) = "10:58pm"
DateUtils.formatDateTime(this, System.currentTimeMillis(), DateUtils.FORMAT_SHOW_DATE) = "September 17"
DateUtils.formatDateTime(this, System.currentTimeMillis(), DateUtils.FORMAT_ABBREV_MONTH) = "Sep 17"
DateUtils.formatDateTime(this, System.currentTimeMillis(), DateUtils.FORMAT_SHOW_YEAR) = "September 17, 2016"
DateUtils.formatDateTime(this, System.currentTimeMillis(), DateUtils.FORMAT_SHOW_YEAR | DateUtils.FORMAT_SHOW_DATE) = "September 17, 2016"
DateUtils.formatDateTime(this, System.currentTimeMillis(), DateUtils.FORMAT_SHOW_YEAR | DateUtils.FORMAT_ABBREV_MONTH) = "Sep 17, 2016"
DateUtils.formatDateTime(this, System.currentTimeMillis(), DateUtils.FORMAT_SHOW_YEAR | DateUtils.FORMAT_ABBREV_MONTH | DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_SHOW_TIME) = "11:00pm, Sep 17, 2016"
DateUtils.formatDateTime(this, System.currentTimeMillis(), DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_ABBREV_MONTH) = "Sep 17"
DateUtils.formatDateTime(this, System.currentTimeMillis(), DateUtils.FORMAT_SHOW_TIME | DateUtils.FORMAT_SHOW_YEAR) = "11:03pm"
DateUtils.formatDateTime(this, System.currentTimeMillis(), DateUtils.FORMAT_SHOW_TIME | DateUtils.FORMAT_SHOW_WEEKDAY) = "11:04pm, Saturday"
DateUtils.formatDateTime(this, System.currentTimeMillis(), DateUtils.FORMAT_SHOW_TIME | DateUtils.FORMAT_SHOW_DATE) = "11:04pm, September 17"