>我有这个:
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 );
它给了我星期天....但在我的时区是星期三。所以我被困在这里,我认为乔达时间图书馆这就是为什么我有错误的日期名称。
请帮助提供套房答案。
已编辑 2
溶液
String dateAsText = new SimpleDateFormat("EEEE, dd MMMM")
.format(new Date(level * 1000L));
我的建议是
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主页上写着"现在要求用户迁移到java.time
(JSR-310(。对于Android来说,这意味着ThreeTenABP。
您可能还想立即开始转换为 JSR-310;有人告诉我,Joda-Time和ThreeTenABP可以愉快地共存。但是,您需要监视导入,因为某些类在两个库中具有相同的名称。
下面的代码将提供您想要的输出
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));