0

I have a JSON array received from my server. I obtain a date as a timestamp String – for example, [{"date": "1418056895", ... }] – and I need to parse it in our day format. How do I do this? I have tried but I always have the year as 1970.

Note: My JSON format is in UNIX.

JSONObject feedObj = (JSONObject) feedArray.get(i);
FeedItem item = new FeedItem();
item.setTimeStamp(feedObj.getString("date"));


public void setTimeStamp(String timeStamp) {
    this.timeStamp = timeStamp;
}

public String getTimeStamp() {
    return timeStamp;
}

In another class, I parse the timestamp to display it:

List<FeedItem> feedItems = ...;
FeedItem item = feedItems.get(position);
CharSequence timeAgo = DateUtils.getRelativeTimeSpanString(
            Long.parseLong(item.getTimeStamp()),
           System.currentTimeMillis(), DateUtils.SECOND_IN_MILLIS);

However the displayed date is always in 1970.

Using values such as 1403375851930 it appears to work as expected (it displays a contemporary date).

Sasha
  • 644
  • 8
  • 22

3 Answers3

2

If you are parsing JSON correctly,

feedObj.getString("date");

holds your date. You are reading date as String. You have to convert it to long.

public static void main(String[] args) {
    Calendar cal = Calendar.getInstance();
    Long timestamp = Long.parseLong("1418056895"); //Long.parseLong(feedObj.getString("date"));
    cal.setTimeInMillis(timestamp * 1000L);
    DateFormat format = new SimpleDateFormat("MM/dd/yyyy"); // what ever format you need.
    System.out.println(format.format(cal.getTime())); // this will be in MM/dd/yyyy
    //item.setTimeStamp(format.format(cal.getTime()));
}

you can also use feedObj.getLong("date"); to get Date in long format directly, but it depends on which JSON library you using.

aadi53
  • 439
  • 4
  • 17
1

I don't really understand what you are trying to ask here. But if you're asking is to ow to convert that date that you get in human readable form then you should take a look at Epoch Converter. The date is returned to you in epoch timestamp. You can convert the same to a human readable form n java by using the following code.

String date = new java.text.SimpleDateFormat("MM/dd/yyyy HH:mm:ss").format(new java.util.Date (epoch*1000));
Antrromet
  • 15,294
  • 10
  • 60
  • 75
1

I have checked your api documentation and the date you have in response is in unix time format as described here wall.post

You can convert it using the method described here Convert Unix time stamp to date in java

Once converted you can format the date as described below.

 private List<FeedItem> feedItems;
TextView timestamp
 FeedItem item = feedItems.get(position);
Long timeObject = Long.parseLong(getTimeStamp());

//use the timeObject and convert it in the String as described
// in above link to convert timestamp in date object than in String

//Once available set it again in timestamp
timestamp.setText(formattedDate);
Community
  • 1
  • 1
Sariq Shaikh
  • 940
  • 8
  • 29