मैं 'सामाजिक' दिनांक प्रारूप कहने की कोशिश कर रहा हूं। मेरे पास पहले से ही एक समाधान है, लेकिन ऐसा लगता है कि एक बेहतर व्यक्ति मौजूद होना चाहिए। मैं क्यों सामाजिक और क्या मतलब है:'सामाजिक' प्रारूप में स्ट्रिंग करने की तिथि
अगर हम पदों हम अगले विकल्पों के बीच भेद कर सकते हैं की फेसबुक समय टिकटों पर गौर:
- एक्स सेकंड पहले
- एक्स मिनट पहले
- एक्स घंटे पहले 21:36
- पर 11:07
- शुक्रवार
- कल मई 5 5:00 बजे पर
- 20 नवंबर पसंद करें 9:05 बजे, 2012
उदाहरण के लिए::
तो वर्तमान समय है: 10
मैं बेहतर विवरण के लिए अगले दृश्य समय बनाया 5:33 बजे, 20 सेकंड बुधवार
सामाजिक पोस्ट के बीच हुआ: 00:00 तक बजे मंगलवार < ->5:33 बजे, 20 सेकंड मंगलवार,
तो दिनांक स्वरूप की तरह होना चाहिए : कल 11:07 बजे पर।
समाधान मैं है:
मैं प्रत्येक विकल्प की जाँच (गिनती में 7) और वापसी 'सामाजिक' दिनांक स्ट्रिंग।
// check yesterday
Date startYesterdayDate = getZeroDayBeforeDays(nowDate, 1);
int compare = compare(startYesterdayDate, postDate);
// if postDate comes after startYesterdayDate
if (compare == -1)
{
return "Yesterday at " + getString(postDate, "HH:mma");
}
मैं एक ही तरीके से अन्य विकल्पों की जाँच करें: यह कैसे मैं विकल्प 4 के लिए जाँच है
Date postDate = getPostDate();
Date nowDate = getNowDate();
// check passed seconds
int passedSeconds = getPassedSeconds(postDate, nowDate);
if (passedSeconds < 60)
{
return passedSeconds + " seconds ago";
}
:
यह वह जगह है मैं कैसे विकल्प 1 लिए जाँच करें।
कुछ तरीकों मैं में उपयोग अपने अगर ऊपर बयान:
public static String getString(Date date, String format)
{
Format formatter = new SimpleDateFormat(format, Locale.US);
String s = formatter.format(date);
return s;
}
/**
* For example: today - 1 day
*
* @param date
* @param numOfMinusDays
* @return
*/
public static Date getDateMinusDays(Date date, int numOfMinusDays)
{
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.DAY_OF_MONTH, (0 - numOfMinusDays));
return calendar.getTime();
}
/**
* Get the day before today at 00:00 am.<br>
* Means, if passed day = <b>Nov 5 13:04</b>, then returned date will be = <b>Nov 4 00:00</b> for days = 1
*
* @param date
* @param days Numner of days to reduce
* @return
*/
public static Date getZeroDayBeforeDays(Date date, int days)
{
Calendar yesterday = Calendar.getInstance();
yesterday.setTime(getDateMinusDays(date, days));
yesterday.set(Calendar.HOUR_OF_DAY, 0);
yesterday.set(Calendar.MINUTE, 0);
yesterday.set(Calendar.SECOND, 0);
yesterday.set(Calendar.MILLISECOND, 1);
return yesterday.getTime();
}
अंत में, मेरे सवालों का:
वहाँ दोनों के बीच अंतर को परिवर्तित करने का एक बेहतर तरीका है 'सामाजिक' स्ट्रिंग प्रारूप की तिथियां? जैसा कि मैंने कहा, मुझे लगता है कि
DateFormat
ऑब्जेक्ट को विस्तारित करने जैसे किसी अन्य तरीके का उपयोग किया जा सकता है, लेकिन मुझे यकीन नहीं है।कैसे 'पर' 'बीता कल' और तरह तार स्थानीय बनाना, ऐसा है कि विभिन्न
Local
सेट उपयुक्त भाषा को तार बदल जाएगा?
इतने लंबे प्रश्न के लिए खेद है, लेकिन मैं जरूरत समझाने के लिए छोटे रास्ते नहीं पा सके।
धन्यवाद
यह बहुत दिलचस्प .., ऐसा लगता है जैसे के साथ मैंने क्या देखा मैं इस पुस्तकालय की जांच करूंगा। धन्यवाद! – sromku
आपका स्वागत है –