我正在尝试使用SimpleDateFormat
显示日期。我的问题是,如果我格式化为星期四(法国)的2017年8月31日的格式显示为星期五。它每天都这样做。
我首先在 DatePickerDialog :
中获取日期public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {
private OnPickerSet mListener;
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
return new DatePickerDialog(getActivity(), this, year, month, day);
}
public void onDateSet(DatePicker view, int year, int month, int day) {
mListener.onDateSet(new Date(year,month,day));
}
public void setOnPickerSetListener(OnPickerSet listener) {
mListener = listener;
}
}
日期
class Date extends java.util.Date {
SimpleDateFormat formatter = new SimpleDateFormat("EEE dd MMM", Locale.FRANCE);
public Date() {
// I don't want it set here
}
public Date(int year, int month, int day) {
super(year, month, day);
}
@Override
public String toString() {
formatter.setTimeZone(TimeZone.getTimeZone("Europe/Paris"));
return formatter.format(this);
}
}
我没有按照约会进行任何计算,所以我不明白为什么?
答案 0 :(得分:1)
首先,您必须修改Date
类
super((year-1900), month, day);
中的更多相关信息
其次,您必须从toString
方法中删除该行
formatter.setTimeZone(TimeZone.getTimeZone("Europe/Paris"));
第三,更重要的是,放弃使用如此多的弃用方法和构造函数扩展类的整个想法。您可以将格式代码放在实用程序类中,并使用方法Calendar.getTime()
从日历中获取Date类。