package com.skripko; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class VkDate { private String poorString; private Date date; public VkDate(String poorString) { this.poorString = poorString; date = parseString(); } private Date parseString() { //SimpleDateFormat parser = new SimpleDateFormat("dd MMM 'at' HH:mm a"); Calendar now = Calendar.getInstance(); if (poorString.endsWith("ago")) { String[] arr = poorString.split(" "); arr[0].replace("one", "1").replace("two", "2").replace("three", "3"); int period = Calendar.SECOND; //"54 seconds ago" if (arr[1].contains("minute")) { //"20 minutes ago" period = Calendar.MINUTE; } else if(arr[1].contains("hour")) { //"one hour ago" period = Calendar.HOUR; } now.add(period, -1 * Integer.parseInt(arr[0])); return now.getTime(); } String dateStr = poorString; String currentDay; String currentMonth; if (dateStr.contains("(Yesterday)|(Вчера)|(Today)|(Сегодня)|(Tomorrow)|(Завтра)")) { if (dateStr.contains("(Yesterday)|(Вчера)")) { //"Yesterday at 4:00 am" now.add(Calendar.DATE, -1); } else if (dateStr.contains("(Tomorrow)|(Завтра)")) { //"Tomorrow at 4:00 am" now.add(Calendar.DATE, 1); } currentDay = Integer.toString(now.get(Calendar.DATE)); currentMonth = Integer.toString(now.get(Calendar.MONTH)); dateStr = dateStr.replace("(Yesterday)|(Вчера)|(Today)|(Сегодня)|(Tomorrow)|(Завтра)", currentDay + " " + currentMonth); //"Today at 9:00 pm" } try { return new SimpleDateFormat("dd MM 'at' HH:mm a").parse(dateStr); } catch (ParseException ex) { } if (poorString.equals("Just now")) { return new Date(); } try { return new SimpleDateFormat("dd MMM 'at' HH:mm a").parse(poorString); //"1 Feb at 8:00 pm" } catch (ParseException ex) { } poorString = "couldnt recognize >> " + poorString; return null; } public String getPoorString() { return poorString; } @Override public String toString() { if (date == null) { return poorString; } return new SimpleDateFormat("dd MMM 'at' HH:mm a").format(date); } }