Tôi đang hiển thị các bài đăng trên Facebook trong ứng dụng Android của mình bằng cách sử dụng SDK Facebook. Tôi có created_time cho mỗi bài đăng trong các định dạng:Làm cách nào để chuyển đổi bài đăng trên facebook created_time thành múi giờ của người dùng?
2012-01-04T12:28:52+0000
tôi đã có thể phân tích này vào một ngày đối tượng Java như vậy:
public static final String DATE_FORMAT = "yyyy-MM-dd'T'HH:mm:ss+SSSS";
public static Date parseDate(String str) {
SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT);
try {
Date date = sdf.parse(str);
} catch(ParseException e) {
Log.w(TAG, "Unable to parse date string \"" + str + "\"");
}
return date;
}
Sau đó, tôi đang cố gắng để hiển thị một thông điệp mô tả thời gian đã trôi qua kể từ khi bài đã được tạo ra bằng phương pháp này:
public static String timeAgoInWords(Date from) {
Date now = new Date();
long difference = now.getTime() - from.getTime();
long distanceInMin = difference/60000;
if (0 <= distanceInMin && distanceInMin <= 1) {
return "Less than 1 minute ago";
} else if (1 <= distanceInMin && distanceInMin <= 45) {
return distanceInMin + " minutes ago";
} else if (45 <= distanceInMin && distanceInMin <= 89) {
return "About 1 hour";
} else if (90 <= distanceInMin && distanceInMin <= 1439) {
return "About " + (distanceInMin/60) + " hours ago";
} else if (1440 <= distanceInMin && distanceInMin <= 2529) {
return "1 day";
} else if (2530 <= distanceInMin && distanceInMin <= 43199) {
return (distanceInMin/1440) + "days ago";
} else if (43200 <= distanceInMin && distanceInMin <= 86399) {
return "About 1 month ago";
} else if (86400 <= distanceInMin && distanceInMin <= 525599) {
return "About " + (distanceInMin/43200) + " months ago";
} else {
long distanceInYears = distanceInMin/525600;
return "About " + distanceInYears + " years ago";
}
}
vấn đề là các create_time của bài là 6 giờ trước thời hạn của tôi (EST). Vì vậy, phương thức timeAgoInWords không hoạt động chính xác. Facebook có luôn ghi lại thời gian tạo bài đăng trong UTC/GMT +1 giờ không?
Tôi có thể làm gì để chuyển đổi thời gian tạo để timeAgoInWords hoạt động chính xác cho múi giờ của người dùng hiện tại, cho dù chúng ở đâu?
Cảm ơn! Điều đó đã làm nó cho tôi. Tôi nghĩ rằng tôi đã nhầm lẫn bởi vì tôi thậm chí không chắc chắn nếu thời gian Facebook đã cho tôi là trong thời gian UTC. Nhưng tôi đoán nó là, cảm ơn bạn! – mattgmg1990
Vui vì nó đã giúp. Thành thật mà nói tôi không biết bất cứ điều gì về facebook nhưng nó sẽ có ý nghĩa đối với bất kỳ hệ thống toàn cầu để sử dụng UTC. – Squonk
Tại sao không chỉ thêm múi giờ cho mẫu ngày và nó sẽ chuyển đổi thành múi giờ địa phương của bạn? ví dụ. "yyyy-MM-dd'T'hh: mm: ssZZZZZ" – Andrew