Viewed   609 times

I have been trying to get an answer to this question for quite a while. I also had a look at the following link: Android - DatePicker Widget Format. On my phone/ emulator (v 2.3.3) both the DatePicker widget and the dialog do not take the date format specified in settings (Settings->Date&Time->Select date format). They are always in the format "MM/dd/yyyy". The locale is set to English UK.

I get "d/MM/yyyy" when I read the settings with:

Settings.System.getString(getContentResolver(), Settings.System.DATE_FORMAT);

Does anybody have an idea about how to change the date format in a DatePicker view?

 Answers

5

To override the DatePicker format the best bet would be to override one of its constructors with a slight edit to the original code. You can edit the ViewGroup in code for you but I'd seriously consider not doing it that way.

  1. Create class LocalizedDatePicker
  2. Override public DatePicker (Context context, AttributeSet attrs, int defStyle) http://developer.android.com/reference/android/widget/DatePicker.html#DatePicker(android.content.Context, android.util.AttributeSet, int)
  3. Copy the code from the original DatePicker constructor (you may need to select a different branch after some testing, I have linked the head)
  4. Override methods that call reorderSpinners() to remove that call.
  5. Replace line inflater.inflate(R.layout.date_picker, this, true); with inflater.inflate(my.package.R.layout.localized_date_picker, this, true);
  6. Copy the original date_picker.xml layout to your local resource localized_date_picker.xml
  7. Edit the file for the desired order, since you're editing this please respect the localization of other places and keep a copy of the original in your global layout folder and put the localized_date_picker.xml in your region specific folder. Since the system's layout is Month Day Year people in other places may expect that order.
Monday, October 17, 2022
3

You can change the separator either by setting a locale or using the DecimalFormatSymbols.

If you want the grouping separator to be a point, you can use an european locale:

NumberFormat nf = NumberFormat.getNumberInstance(Locale.GERMAN);
DecimalFormat df = (DecimalFormat)nf;

Alternatively you can use the DecimalFormatSymbols class to change the symbols that appear in the formatted numbers produced by the format method. These symbols include the decimal separator, the grouping separator, the minus sign, and the percent sign, among others:

DecimalFormatSymbols otherSymbols = new DecimalFormatSymbols(currentLocale);
otherSymbols.setDecimalSeparator(',');
otherSymbols.setGroupingSeparator('.'); 
DecimalFormat df = new DecimalFormat(formatString, otherSymbols);

currentLocale can be obtained from Locale.getDefault() i.e.:

Locale currentLocale = Locale.getDefault();
Thursday, November 24, 2022
 
2
$('#datepicker').datepicker('option', 'dateFormat', 'dd-mm-yy');

Year is specified as y for 2 digits and yy for 4 digits, as stated here.

Thursday, October 20, 2022
 
5

You can reset the language by using the below syntax

set language 'us_english'

In order to view all the languages and their date format try this one

select * from sys.syslanguages

If you need to permanently change the language then

  • Go To Security
  • Logins
  • Right Click on your username and select Properties
  • Change the default language to English

This change will persist even after you restart your SSMS

Wednesday, December 7, 2022
 
5

Check this:

date format change in datepicker and calendar

   year = calendar.get(Calendar.YEAR);
   month = calendar.get(Calendar.MONTH);
   day = calendar.get(Calendar.DAY_OF_MONTH);

    if(month < 10){

        month = "0" + month;
    }
    if(day < 10){

        day  = "0" + day ;
    }
    searchText.setText(day + "-" + month + "-" + year);
Tuesday, October 11, 2022
 
Only authorized users can answer the search term. Please sign in first, or register a free account.
Not the answer you're looking for? Browse other questions tagged :
 
Share