在DatePicker(Android)中设置时区

在DatePicker(Android)中设置时区,android,datepicker,Android,Datepicker,我在Android应用程序中使用DatePicker来显示用户可以选择的可用日期。我想显示GMT时区中的日期,以便所有用户看到相同的日期。我还没有找到任何方法来修改日期选择器的时区。我看到DatePicker使用默认时区选择时区。所以我把默认时区改成了格林尼治标准时间,它起作用了,但是现在整个时区都变了,所以不是最好的解决方案。有人有更好的想法吗?谢谢您使用长原语指定了setMinDate和setMaxDate。在分配期间无法包含特定时区。该方法将始终使用设备区域设置 您必须首先创建要使用的最小

我在Android应用程序中使用DatePicker来显示用户可以选择的可用日期。我想显示GMT时区中的日期,以便所有用户看到相同的日期。我还没有找到任何方法来修改日期选择器的时区。我看到DatePicker使用默认时区选择时区。所以我把默认时区改成了格林尼治标准时间,它起作用了,但是现在整个时区都变了,所以不是最好的解决方案。有人有更好的想法吗?谢谢

您使用长原语指定了setMinDate和setMaxDate。在分配期间无法包含特定时区。该方法将始终使用设备区域设置

您必须首先创建要使用的最小和最大日期,然后根据设备的本地时区进行调整,然后使用各自的长日期(getTimeInMillis()),并将其分配给日期选择器的最小/最大日期属性

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();
  }