将整数转换为日期格式,如“' Day'和“月份”的名称在Java或Android中

时间:2017-05-17 12:08:06

标签: java android date time calendar

我有这个:

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

2 个答案:

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