将整数转换为日期格式,例如Java或Android中的"日"名称和"月"的名称



>我有这个:

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));

相关内容

  • 没有找到相关文章