Q:

JSON.deserialize for Date.class returning a wrong date

I am passing a serialized date through JavaScript using Remote Action. 
In Apex I deserialize this string to a Date but the date returned is not what I am expecting. Here's my code:
Date newDeserializedDate = (Date) JSON.deserialize(JsDate, Date.class);

When I system.debug(JsDate) I get this: 2016-04-06.
However when I system.debug(newDeserializedDate ) I get 2016-01-01 00:00:00.
Why is the date different after the desirialization?

A:

try Date.valueOf() to convert string to date value
String JsDate = '2016-04-06';
Date newDeserialized  = Date.valueOf(JsDate);
System.debug('newDeserialized====!'+newDeserialized);

