Skip to main content

Converting String to Date and Date to String in android

I struggled almost for an entire day trying to access and manipulate dates for my app. If I use date class, many of the methods show warning that they are deprecated. I took the help of simple date format and tried showing month and date. But some how the output was always wrong. 

So, if you need to access dates, set a date to current date or to any other particular date and also read dates from a edit text, you should ideally use 3 classes  viz Calendar, Date and SimpleDateFormat.

First create a Calendar object and initialize it with current date. 

     Calendar cal  = Calendar.getInstance();
  
Now to convert this to Date object use getTime() method.

     Date someDate = cal.getTime();//this returns a date object.

Now to get a string representation of this date use SimpleDateFormat class

            SimpleDateFormat dtFormat = new SimpleDateFormat("dd-MMMM-yyyy");
            String dtStr = dtFormat.format(someDate);


For today's date i.e. 22-7-2014, the string dtStr will be 22-July-2014.

Some points to note here 
  1. In SimpleDateFormat , d - day, M - is month , y is year
  2. For month don't use lower m. Use M instead. (That mistake caused me hours of struggle).
  3. If month has 3 or more, it is shown in text, else in number .
    1. MM - 07
    2. MMM- Jul
    3. MMMM-July

Convert string to date

For this use parse method of SimpleDateFormat 

        SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");
        try {
            Date dt = formatter.parse(datestr);
            mCal.setTime(dt);
        } catch (ParseException e) {

            e.printStackTrace();
           
        } 


Setting date or month or year

To set any of date, month, year or even hour, minute and second, you can use this method

        calendarObject.set(Calendar.fieldname,value);
  e.g.

mCal.set(Calendar.MONTH,5);
mCal.set(Calendar.DAY_OF_MONTH,4);

 
 

Comments

Popular posts from this blog

Simple ListView Adapter and list item select

When you are using a listview in your applications many a times you will write your own adapter to display item. But if your list is very simple showing a list of strings, you can use inbuilt adapters like ArrayAdapter, SimpleCursorAdapter etc.

ArrayAdapterLet us look at an example

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <ListView android:layout_height="wrap_content" android:id="@+id/listView1" android:layout_width="match_parent" android:layout_margin="20dp"> </ListView> </LinearLayout>

And add these lines to the onCreate method of the activity.

super.onCreate(savedInstanceState); …

Drawables in Android - Layer drawable

Let us see how to use layer drawable. You can have two or more bitmaps on different layers to create such a drawable

Using xml:

You should use layer-list in your xml file to create layerdrawable. Here is layer.xml
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <bitmap android:src="@drawable/whiteicon" android:gravity="top|left"/> </item> <item> <bitmap android:src="@drawable/blueicon" android:gravity="top|left"/> </item> <item> <bitmap android:src="@drawable/redicon" android:gravity="top|left"/> </item> </layer-list>
We are using three different bitmaps whiteicon.png, redicon.png and blueicon.png which are present in /res/drawable/mdpi folder. All these are of different sizes and aligned to top left. This drawab…

DatePickers in Android

DatePicker is a view which lets the user select a date showing a calendar or 3 spinners for dd, mm and yy.

Let us see how to use this.
Easy Method: To use a DatePicker you can use DatePickerDialog. This can be created and shown programmatically too.

publicvoidonCreate(Bundle b){/*********/ Button btn =(Button)findViewById(R.id.btn); btn.setOnClickListener(new View.OnClickListener(){@OverridepublicvoidonClick(View v){ showPickerDialog();}});}privatevoidshowPickerDialog(){ DatePickerDialog dtPickerDlg =new DatePickerDialog(this,this, 2017,10,20); dtPickerDialog.show();}

In our xml file, let us have a button and in the onclick listener of the button, let us display the date picker dialog - we call showPickerDialog.

In showPickerDialog,  we are using a random date to initialize.

The first  parameter is the context. Second parameter is the class which implements the interface OnDateSetListener. Next three parameters are year, month (Jan is 0) and …