我是初学者编码器,目前正在制作提醒应用。到目前为止,这个应用程序执行以下操作:
由于没有日期时间选择器,我自定义了一个。我尝试了很多方法,这是唯一适合我的方法。所以现在我有这个问题 - 我想显示与手机格式相同的日期和时间格式 - 对于美国,它将是月/日/年和上午/下午,欧洲日/月/年和24小时格式。如果没有办法做到这一点,我想至少显示月份名称 - 比如3月3日 。我使用StringBuilder追加日,月和年。如果日期是例如02/03/2016,这可能会令人困惑。至于我显示24小时格式的时间,添加" 0"一位数字。
正如我所说我是初学者所以我在使用this和StringBuilder这样的例子时遇到了问题。我也尝试this示例而不是StringBuilder,但我得到但是我得到了不兼容的类型错误:需要android.widget.TextView,找到了java.lang.String。
我目前显示日期和时间的方式显示在" //更新日期和时间"部分。其余的代码可供任何需要创建自定义日期时间选择器的人参考:)
private Button mPickDate;
private TextView mDateDisplay;
private TextView mTimeDisplay;
final Calendar c = Calendar.getInstance();
private int mYear = c.get(Calendar.YEAR);
private int mMonth = c.get(Calendar.MONTH);
private int mDay = c.get(Calendar.DAY_OF_MONTH);
private int mHour = c.get(Calendar.HOUR_OF_DAY);
private int mMinute = c.get(Calendar.MINUTE);
static final int TIME_DIALOG_ID = 1;
static final int DATE_DIALOG_ID = 0;
其余的代码:
//Update date and time
private void updateDate() {
mDateDisplay.setText(
new StringBuilder()
.append(mDay).append("/")
.append(mMonth + 1).append("/")
.append(mYear).append(" "));
showDialog(TIME_DIALOG_ID);
}
public void updateTime() {
mTimeDisplay.setText(
new StringBuilder()
.append(pad(mHour)).append(":")
.append(pad(mMinute)));
}
// Append 0 if number < 10
private static String pad(int c) {
if (c >= 10)
return String.valueOf(c);
else
return "0" + String.valueOf(c);
}
// Generate DatePickerDialog and TimePickerDialog
private DatePickerDialog.OnDateSetListener mDateSetListener =
new DatePickerDialog.OnDateSetListener() {
public void onDateSet(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
mYear = year;
mMonth = monthOfYear;
mDay = dayOfMonth;
updateDate();
}
};
private TimePickerDialog.OnTimeSetListener mTimeSetListener =
new TimePickerDialog.OnTimeSetListener() {
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
mHour = hourOfDay;
mMinute = minute;
Calendar c2 = Calendar.getInstance();
if (mYear == c2.get(Calendar.YEAR)
&& mMonth == c2.get(Calendar.MONTH)
&& mDay == c2.get(Calendar.DAY_OF_MONTH)
&& (mHour < c2.get(Calendar.HOUR_OF_DAY) || (mHour == c2.get(Calendar.HOUR_OF_DAY) && mMinute <= (c2.get(Calendar.MINUTE) + 10))
)
) {
Toast.makeText(SetDateTimeActivity.this, "Set time at least 10 minutes from now", Toast.LENGTH_LONG).show();
} else {
updateTime();
}
}
};
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case DATE_DIALOG_ID:
DatePickerDialog datePickerDialog = new DatePickerDialog(this,
mDateSetListener,
mYear, mMonth, mDay);
c.add(Calendar.MONTH, +1);
long oneMonthAhead = c.getTimeInMillis();
datePickerDialog.getDatePicker().setMaxDate(oneMonthAhead);
datePickerDialog.getDatePicker().setMinDate(System.currentTimeMillis() - 1000);
return datePickerDialog;
case TIME_DIALOG_ID:
TimePickerDialog timePickerDialog =
new TimePickerDialog(this,
mTimeSetListener, mHour, mMinute, false);
return timePickerDialog;
}
return null;
}
提前谢谢你:)
编辑 - 我在代码中使用的解决方案:
// Update date and time
private void updateDate() {
c.set(mYear, mMonth, mDay);
String date = new SimpleDateFormat("MMM dd, yyyy").format(c.getTime());
mDateDisplay.setText(date);
showDialog(TIME_DIALOG_ID);
}
public void updateTime() {
c.set(mYear, mMonth, mDay, mHour, mMinute); // check why do I need to add year,month,day
String time = new SimpleDateFormat(" hh:mm a").format(c.getTime());
mTimeDisplay.setText(time);
}
答案 0 :(得分:1)
您可以在下面更改您想要的格式示例。
String strCurrentDate = "Wed, 18 Apr 2012 07:55:29 +0000";
SimpleDateFormat format = new SimpleDateFormat("EEE, dd MMM yyyy hh:mm:ss Z");
Date newDate = format.parse(strCurrentDate);
format = new SimpleDateFormat("MMM dd,yyyy hh:mm a");
String date = format.format(newDate);
或您的本地格式
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yy HH:mm", Locale.getDefault());
String formatted = sdf .format(900000);
System.out.println(simpleDateFormat.parse(formatted));
或者您可以从calander获取一年的月份并格式化。
Calendar cal = Calendar.getInstance();
cal.get(Calendar.YEAR);
cal.get(Calendar.DAY_OF_MONTH);
cal.get(Calendar.MONTH);
String format = new SimpleDateFormat("E, MMM d, yyyy").format(cal.getTime());
您只需更改格式搜索美国日期格式的格式即可将其放入
SimpleDateFormat("here").format(cal.getTime());