我有这个:
integeres = "1495022669";
我想要输出:
" 5月17日"
我怎样才能实现它?我在互联网上尝试了几个答案,但无法取得成功。
被修改
我试过这段代码
level = 1495023057;
DateTimeZone timeZone = DateTimeZone.forID( "Asia/Karachi" );
DateTime dateTime = new DateTime( level, timeZone );
int dayOfWeekNumber = dateTime.getDayOfWeek(); // ISO 8601 standard says Monday is 1.
DateTimeFormatter formatter = DateTimeFormat.forPattern( "EEEE" ).withLocale( java.util.Locale.ENGLISH );
String dayOfWeekName = formatter.print( dateTime );
它给了我星期天....但在我的时区它是星期三。所以我被困在这里,我认为joda时间库就是为什么我有错误的日名。
请帮助提供适合的答案。
已编辑2
溶液
String dateAsText = new SimpleDateFormat("EEEE, dd MMMM")
.format(new Date(level * 1000L));
答案 0 :(得分:0)
我的建议是
ZoneId timeZone = ZoneId.of("Asia/Karachi");
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("EEEE, dd MMMM", Locale.ENGLISH);
String dateAsText = Instant.ofEpochSecond(Long.parseLong(integeres))
.atZone(timeZone)
.format(formatter);
这会产生
Wednesday, 17 May
我知道你在问题中使用Joda-Time,如果你对此感到满意,你可能不想改变。对于新代码我推荐JSR-310,所以这就是我上面使用的。 Joda-Time homepage说“现在要求用户迁移到java.time
(JSR-310)。”对于Android,这意味着ThreeTenABP。
您可能还想立即开始转换到JSR-310;我被告知Joda-Time和ThreeTenABP可以愉快地共存。但是,您需要观察导入,因为某些类在两个库中都具有相同的名称。
答案 1 :(得分:-1)
import android.text.format.DateUtils;
public String getDate(long timestamp) {
long Yesterday = new Date().getTime() - 24 * 60 * 60 * 1000;
timestamp = timestamp * 1000;
if (DateUtils.isToday(timestamp)) {
return "Today";
} else if (DateUtils.formatDateTime(MainActivity.this, Yesterday, DateUtils.FORMAT_SHOW_YEAR).equalsIgnoreCase(DateUtils.formatDateTime(MainActivity.this, timestamp, DateUtils.FORMAT_SHOW_YEAR))) {
return "Yesterday";
} else {
return DateUtils.formatDateTime(ChattingScreenActivity.this, timestamp, DateUtils.FORMAT_SHOW_YEAR);
}
}
已编辑2
我用这个来解决它:
String dateAsText = new SimpleDateFormat("EEEE, dd MMMM")
.format(new Date(level * 1000L));