使用 SimpleDate 的 Android 日期格式

问题描述 投票:0回答:4

我正在开发一个适用于 Android 的 XML 解析器,包含 12 个不同的项目,我需要帮助为每个项目创建日期。这是我到目前为止所拥有的:

TextView detailsPubdate = (TextView)findViewById(R.id.detailspubdate);

我希望日期看起来像这样:9 月 3 日星期六。感谢您的帮助!

android simpledateformat
4个回答
8
投票

如果您正在查找今天的日期,您可以使用

Date
对象来完成此操作。

Date today = new Date();//this creates a date representing this instance in time.

然后将日期传递给

SimpleDateFormat.format(Date)
方法。

// "EEEE, MMMM, d" is the pattern to use to get your desired formatted date.
SimpleDateFormat sdf = new SimpleDateFormat("EEEE, MMMM, d");
String formattedDate = sdf.format(today);

最后,您可以将这个

String
设置到您的
TextView

detailsPubdate.setText(formattedDate);

这里是

SimpleDateFormat
的文档。 该文档显示了可用于格式化
Date
对象的各种模式。


2
投票

使用 DateFormat 类来格式化日期。

示例:

     DateFormat formatter = new SimpleDateFormat("EEE, MMM d");
    Date date = (Date) formatter.parse("02.47.44 PM");
detailsPubdate.setText(date.toString());

如果您想更改模式,这是 SimpleDateFormatter 的 java 文档。


1
投票

目前还不清楚您要做什么,但您可以使用以下内容来格式化日期:

   SimpleDateFormat sdf=new SimpleDateFormat("EEEE, MMMM, d");
   //get current date
   Date date=new Date();
   String dateString=sdf.format(date);

你应该看看

SimpleDateFormat
课程。


0
投票

java.time

2014 年 3 月,Java 8 引入了现代的

java.time
日期时间 API,取代了容易出错的旧版
java.util
日期时间 API
。任何新代码都应使用
java.time
API*

我希望日期看起来像这样:9 月 3 日星期六。

除了格式和现代API的使用之外,最需要考虑的一点是

Locale
。您想要获取的文本是英文的;因此,如果您在代码中不使用
Locale
,则输出将采用在执行代码的 JVM 中设置的默认
Locale
。检查始终为自定义格式指定带有日期时间格式化程序的区域设置以了解更多信息。

使用现代日期时间 API 的解决方案

使用

ZonedDateTime now(ZoneId)
获取当前日期时间并根据需要设置格式。

演示:

public class Main {
    public static void main(String args[]) {
        // ZoneId.systemDefault() returns the default time zone of the JVM. Replace it
        // with the applicable ZoneId e.g., ZoneId.of("America/Los_Angeles")
        ZonedDateTime now = ZonedDateTime.now(ZoneId.systemDefault());

        // Default format
        System.out.println(now);

        // Formatted string
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("EEEE, MMMM d", Locale.ENGLISH);
        String formattedString = now.format(formatter);
        System.out.println(formattedString);
    }
}

输出:

2024-11-10T12:02:02.644429400Z[Europe/London]
Sunday, November 10

在线演示

注意: 无论出于何种原因,如果您需要

java.util.Date
对象的
ZonedDateTime
实例,您可以按如下方式操作:

Date.from(now.toInstant());

Trail:日期时间了解有关现代日期时间 API 的更多信息。


* 如果您收到

java.util.Date
对象,请使用
java.time.Instant
 将其转换为 
Date#toInstant
对象,并从中派生其他
java.time
日期时间对象。

© www.soinside.com 2019 - 2024. All rights reserved.