gpt4 book ai didi

java - Android : Converting data from date, 时间选择器从日历到 sql 时间戳和反向。

转载 作者:太空宇宙 更新时间:2023-11-03 10:42:19 25 4
gpt4 key购买 nike

我正在开发一个 Android 应用程序,我想在其中保存用户在 java.sql.timestamp 中输入的日期和时间并将其保存。再次向用户显示时,我想将其分别转换回“dd-MM-YYYY”和“HH:MM”等格式。我设法将从用户收到的条目设置为单独变量中的年、月、日、小时、分钟,甚至尝试获取时间,但 Calendar 实例总是返回当前日期和时间。我不知道我做错了什么。请告诉我。

安卓代码:

 Button menuStartDate, menuStartTime;
EditText startDateTextField, startTimeTextField;
int monthOfYear, dayOfWeek, hourOfADay, minuteOfHour, year;
private Calendar startCalendar;
@Override
public void onClick(View view) {
if (view == menuStartDate) {

startCalendar = Calendar.getInstance();
year = startCalendar.get(Calendar.YEAR);
monthOfYear = startCalendar.get(Calendar.MONTH);
dayOfWeek = startCalendar.get(Calendar.DAY_OF_MONTH);

DatePickerDialog datePickerDialog = new DatePickerDialog(this,
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
startDateTextField.setText(dayOfMonth + "-"
+ (monthOfYear + 1) + "-" + year);

}
}, year, monthOfYear, dayOfWeek);
datePickerDialog.show();
startCalendar.set(Calendar.MONTH, monthOfYear);
startCalendar.set(Calendar.YEAR, year);
startCalendar.set(Calendar.DAY_OF_MONTH, dayOfWeek);

}
if (view == menuStartTime) {

startCalendar = Calendar.getInstance();
hourOfADay = startCalendar.get(Calendar.HOUR_OF_DAY);
minuteOfHour = startCalendar.get(Calendar.MINUTE);

TimePickerDialog timePickerDialog = new TimePickerDialog(this,
new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay,
int minute) {
startTimeTextField.setText(hourOfDay + ":" + minute);
}
}, hourOfADay, minuteOfHour, false);
timePickerDialog.show();
startCalendar.set(Calendar.HOUR_OF_DAY, hourOfADay);
startCalendar.set(Calendar.MINUTE, minuteOfHour);
}

如您在上述实例中所见,我正在从用户那里获取信息并进行设置。不幸的是,我无法获得用户在日历中设置的时间。这是转换代码:

if(view == submitMenuButton){
MenuCard menuCard = new MenuCard();
if(!(startDateTextField.getText().toString().length()<1)){
if(!(startTimeTextField.getText().toString().length()<1)){
Timestamp timestamp = new Timestamp(startCalendar.getTimeInMillis());
Log.d("TImestamp is",timestamp.toString());

} else {
startTimeTextField.setError("Please select start time");
}
}else {
startDateTextField.setError("Please select start date");

}
}

我做错了什么?你能帮忙的话,我会很高兴。谢谢。

最佳答案

这是设置 DatePickerDialog 的日期的方法:

final Calendar c = Calendar.getInstance();
int mYear = c.get(Calendar.YEAR);
int mMonth = c.get(Calendar.MONTH);
int mDay = c.get(Calendar.DAY_OF_MONTH);

DatePickerDialog datePickerDialog = new DatePickerDialog(getActivity(), new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
// dd.MM.yyyy
register_textview_birthday.setText(dayOfMonth + "." + (monthOfYear + 1) + "." + year);
}
}, mYear, mMonth, mDay);
datePickerDialog.show();

以及将其检索为 java.util.Date 的代码:

public static Date stringToDate(String string, final String format, final Locale locale) throws ParseException {
ThreadLocal formater = new ThreadLocal() {
protected SimpleDateFormat initialValue() {
return new SimpleDateFormat(format, locale);
}
};
return ((SimpleDateFormat)formater.get()).parse(string);
}

Date date = stringToDate(register_textview_birthday.getText().toString().trim(), "dd.MM.yyyy", Locale.ENGLISH);

现在您可以将 java.util.Date 转换为 sql 时间戳。根据您的情况更改日期格式和区域设置。

当心 SimpleDateFormat 不是线程安全的。所以像我在上面的代码中那样使用 TreadLocal。

对于时间:将 DatePicker 的日期字符串附加到 TimerPicker 的时间字符串,并将格式更改为类似“dd.MM.yyyy HH:mm”的格式。

关于java - Android : Converting data from date, 时间选择器从日历到 sql 时间戳和反向。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31401529/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com