SimpleDateFormat 字符串到星期几
SimpleDateFormat String to Day of Week
我在 Android 中有一个 SQLite 数据库,其中特定事件的日期保存为 String
。我通过 DatePickerDialog
.
获得了 Date
我的活动显示在 ListView
中,为此我想按日期排序并从每个 String
.
中获取星期几
我知道我必须将我的 String
转换为 SimpleDateFormat
,然后获取日期并使事件具有可比性。但我得到的只是 ParseException
.
那是我插入数据库的 String
:
private void handleDateDialog() {
setDate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH);
int day = cal.get(Calendar.DAY_OF_MONTH);
DatePickerDialog dialog = new DatePickerDialog(CreateEvent.this,android.R.style.Theme_Holo_Light_Dialog_MinWidth,dateSetListener,year,month,day);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
dialog.show();
}
});
dateSetListener = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker datePicker, int year, int month, int day) {
month += 1;
String input = day + "-" + month + "-" + year;
dateSelected.setText(input);
}
};
}
这是我通过阅读其他问题从 Stack Overflow 得到的:
public String getDayOfWeek(){
String eventDate = this.getDate();
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
try {
Date myDate = dateFormat.parse(eventDate);
} catch (ParseException e) {
e.printStackTrace();
}
dateFormat.applyPattern("EE");
String dayofweek = dateFormat.format(date);
return dayofweek;
}
这就是我如何尝试将新的 String
dayOfWeek 放入我的 ListView
:
try {
holder.day_of_week.setText(individualEvent.getDayOfWeek());
} catch (Exception e) {
e.printStackTrace();
}
但我总是在 Android 监视器中收到此错误:
java.lang.IllegalArgumentException: Cannot format given Object as a Date
所以,我假设我的数据库有问题。
显示我的约会对象时 String
显示如下:28-10-2017
我不知道为什么这不能格式化。
您需要将代码更改为:
public String getDayOfWeek(){
String eventDate = this.getDate();
SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy");
try {
Date myDate = dateFormat.parse(eventDate);
} catch (ParseException e) {
e.printStackTrace();
}
dateFormat.applyPattern("EE");
String dayofweek = dateFormat.parse(myDate);
return dayofweek;
}
使用以下方法:
保持格式标准和相同
/**
* Parses @date to String in provided @format
*
* @param date Date
* @param format Convert to Format
* @return formatted date string
*/
public static String DateToString(Date date, String format) {
if (date != null) {
try {
DateFormat dateFormat = new SimpleDateFormat(format);
return dateFormat.format(date);
} catch (Exception e) {
e.printStackTrace();
return "";
}
} else {
return "";
}
}
/**
* Parses String to date in provided {@link Format } as String
*
* @param date String date
* @param format Format
* @return Date
*/
public static Date StringToDate(String date, String format) {
if (date != null && !date.isEmpty() && date.length() > 0) {
try {
DateFormat dateFormat = new SimpleDateFormat(format);
return dateFormat.parse(date);
} catch (Exception e) {
e.printStackTrace();
return null;
}
} else {
return null;
}
}
/**
* Parses date String to date String in provided {@link Format } fromFormat to toFormat as String
*
* @param date String date
* @param fromFormat fromFormat
* @param toFormat toFormat
* @return Format String date
*/
public static String StringToString(String date, String fromFormat, String toFormat) {
if (date != null && !date.isEmpty()) {
try {
SimpleDateFormat formatter = new SimpleDateFormat(fromFormat);
Date tempDate = formatter.parse(date);
DateFormat dateFormat = new SimpleDateFormat(toFormat);
return dateFormat.format(tempDate);
} catch (Exception e) {
e.printStackTrace();
return "";
}
} else {
return "";
}
}
由于您在此模式中的日期是 28.10.2017,因此您需要按如下方式更改日期格式:-
SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy");
我在 Android 中有一个 SQLite 数据库,其中特定事件的日期保存为 String
。我通过 DatePickerDialog
.
Date
我的活动显示在 ListView
中,为此我想按日期排序并从每个 String
.
我知道我必须将我的 String
转换为 SimpleDateFormat
,然后获取日期并使事件具有可比性。但我得到的只是 ParseException
.
那是我插入数据库的 String
:
private void handleDateDialog() {
setDate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH);
int day = cal.get(Calendar.DAY_OF_MONTH);
DatePickerDialog dialog = new DatePickerDialog(CreateEvent.this,android.R.style.Theme_Holo_Light_Dialog_MinWidth,dateSetListener,year,month,day);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
dialog.show();
}
});
dateSetListener = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker datePicker, int year, int month, int day) {
month += 1;
String input = day + "-" + month + "-" + year;
dateSelected.setText(input);
}
};
}
这是我通过阅读其他问题从 Stack Overflow 得到的:
public String getDayOfWeek(){
String eventDate = this.getDate();
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
try {
Date myDate = dateFormat.parse(eventDate);
} catch (ParseException e) {
e.printStackTrace();
}
dateFormat.applyPattern("EE");
String dayofweek = dateFormat.format(date);
return dayofweek;
}
这就是我如何尝试将新的 String
dayOfWeek 放入我的 ListView
:
try {
holder.day_of_week.setText(individualEvent.getDayOfWeek());
} catch (Exception e) {
e.printStackTrace();
}
但我总是在 Android 监视器中收到此错误:
java.lang.IllegalArgumentException: Cannot format given Object as a Date
所以,我假设我的数据库有问题。
显示我的约会对象时 String
显示如下:28-10-2017
我不知道为什么这不能格式化。
您需要将代码更改为:
public String getDayOfWeek(){
String eventDate = this.getDate();
SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy");
try {
Date myDate = dateFormat.parse(eventDate);
} catch (ParseException e) {
e.printStackTrace();
}
dateFormat.applyPattern("EE");
String dayofweek = dateFormat.parse(myDate);
return dayofweek;
}
使用以下方法: 保持格式标准和相同
/**
* Parses @date to String in provided @format
*
* @param date Date
* @param format Convert to Format
* @return formatted date string
*/
public static String DateToString(Date date, String format) {
if (date != null) {
try {
DateFormat dateFormat = new SimpleDateFormat(format);
return dateFormat.format(date);
} catch (Exception e) {
e.printStackTrace();
return "";
}
} else {
return "";
}
}
/**
* Parses String to date in provided {@link Format } as String
*
* @param date String date
* @param format Format
* @return Date
*/
public static Date StringToDate(String date, String format) {
if (date != null && !date.isEmpty() && date.length() > 0) {
try {
DateFormat dateFormat = new SimpleDateFormat(format);
return dateFormat.parse(date);
} catch (Exception e) {
e.printStackTrace();
return null;
}
} else {
return null;
}
}
/**
* Parses date String to date String in provided {@link Format } fromFormat to toFormat as String
*
* @param date String date
* @param fromFormat fromFormat
* @param toFormat toFormat
* @return Format String date
*/
public static String StringToString(String date, String fromFormat, String toFormat) {
if (date != null && !date.isEmpty()) {
try {
SimpleDateFormat formatter = new SimpleDateFormat(fromFormat);
Date tempDate = formatter.parse(date);
DateFormat dateFormat = new SimpleDateFormat(toFormat);
return dateFormat.format(tempDate);
} catch (Exception e) {
e.printStackTrace();
return "";
}
} else {
return "";
}
}
由于您在此模式中的日期是 28.10.2017,因此您需要按如下方式更改日期格式:-
SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy");