在DatePicker(Android)中设置时区
我在Android应用程序中使用DatePicker来显示用户可以选择的可用日期。我想显示GMT时区中的日期,以便所有用户看到相同的日期。我还没有找到任何方法来修改日期选择器的时区。我看到DatePicker使用默认时区选择时区。所以我把默认时区改成了格林尼治标准时间,它起作用了,但是现在整个时区都变了,所以不是最好的解决方案。有人有更好的想法吗?谢谢您使用长原语指定了setMinDate和setMaxDate。在分配期间无法包含特定时区。该方法将始终使用设备区域设置 您必须首先创建要使用的最小和最大日期,然后根据设备的本地时区进行调整,然后使用各自的长日期(getTimeInMillis()),并将其分配给日期选择器的最小/最大日期属性在DatePicker(Android)中设置时区,android,datepicker,Android,Datepicker,我在Android应用程序中使用DatePicker来显示用户可以选择的可用日期。我想显示GMT时区中的日期,以便所有用户看到相同的日期。我还没有找到任何方法来修改日期选择器的时区。我看到DatePicker使用默认时区选择时区。所以我把默认时区改成了格林尼治标准时间,它起作用了,但是现在整个时区都变了,所以不是最好的解决方案。有人有更好的想法吗?谢谢您使用长原语指定了setMinDate和setMaxDate。在分配期间无法包含特定时区。该方法将始终使用设备区域设置 您必须首先创建要使用的最小
public void GetDate(final String flag) {
final Calendar c = Calendar.getInstance();
c.setTimeZone(TimeZone.getTimeZone("Australia/Canberra"));// here is your code
mYear = c.get(Calendar.YEAR);
mMonth = c.get(Calendar.MONTH);
mDay = c.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) {
userentered_Date = dayOfMonth + "-" + (monthOfYear + 1) + "-" + year;
Date date = new GregorianCalendar(year, monthOfYear, dayOfMonth).getTime();
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
DateFormat sdf = new SimpleDateFormat("dd MMMM yyyy");
String strDate = df.format(date);
String e = sdf.format(date);
GetTime(strDate, e, flag);
}
}, mYear, mMonth, mDay);
datePickerDialog.show();
}
这应该可以让你工作。以下是我在项目中使用的代码,用于调整使用时间
time_tab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final Calendar c = getInstance();
mHour = c.get(HOUR_OF_DAY);
mMinute = c.get(MINUTE);
mYear = c.get(YEAR);
mMonth = "" + (c.get (MONTH) + 1);
mDate = c.get(DATE);
// Launch Time Picker Dialog
TimePickerDialog tpd = new
TimePickerDialog(NotificationActivity.this,
new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int
hourOfDay,
int minute) {
Hour = hourOfDay;
Minute = minute;
int r = minute / 10;
if (r == 0) {
new_minute = "0" + minute;
} else {
new_minute = minute + "";
}
if (Hour > 12) {
new_hour = (hourOfDay - 12);
notification_time.setText(newStringBuilder().append(new_hour)
.append(":").append(new_minute));
notification_am_pm.setText("PM");
} else if (Hour == 12) {
new_hour = hourOfDay;
notification_time.setText(new
StringBuilder().append(new_hour)
.append(":").append(new_minute));
notification_am_pm.setText("PM");
} else {
new_hour = hourOfDay;
notification_time.setText(new StringBuilder().append(new_hour)
.append(":").append(new_minute));
notification_am_pm.setText("AM");
}
int timestamp;
long time = 0;
try {
SimpleDateFormat df = newSimpleDateFormat("dd-MM-yyyy HH:mm");
String dateStr = mDate + "-" + mMonth + "-" + mYear + " " + hourOfDay + ":" + minute;
df.setTimeZone(TimeZone.getDefault());
Date date = df.parse(dateStr);
time = date.getTime();
timestamp = (int) time;
String newtimeStamp = "" + timestamp;
}, mHour, mMinute, false);
tpd.show();
}