java中从时间戳中提取元素

java中从时间戳中提取元素,java,android,datetime-format,Java,Android,Datetime Format,如果给我一个时间戳值,例如:Tue Jun 22 18:17:48+0000 2010,我如何从时间戳中提取值“Jun 22”并将其转换为变量 如果您只想将其作为字符串,可以使用: String input = "Tue Jun 22 18:17:48 +0000 2010"; String monthAndDay = input.split("\\s+")[1] + input.split("\\s+")[2]; 如果这是一个日期,请查看我今天早些时候的帖子: 如果您只想将其作为字符串,可以

如果给我一个时间戳值,例如:Tue Jun 22 18:17:48+0000 2010,我如何从时间戳中提取值“Jun 22”并将其转换为变量

如果您只想将其作为字符串,可以使用:

String input = "Tue Jun 22 18:17:48 +0000 2010";
String monthAndDay = input.split("\\s+")[1] + input.split("\\s+")[2];
如果这是一个日期,请查看我今天早些时候的帖子:


如果您只想将其作为字符串,可以使用:

String input = "Tue Jun 22 18:17:48 +0000 2010";
String monthAndDay = input.split("\\s+")[1] + input.split("\\s+")[2];
如果这是一个日期,请查看我今天早些时候的帖子:


您可以使用纯java代码来实现这一点

    String input = "Tue Jun 22 18:17:48 +0000 2010";
    SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM d hh:mm:ss Z yyyy");
    Date date = sdf.parse(input);
    sdf = new SimpleDateFormat("MMM d");
    System.out.println(sdf.format(date));

输出:
Jun 22

您可以使用纯java代码来获得此结果

    String input = "Tue Jun 22 18:17:48 +0000 2010";
    SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM d hh:mm:ss Z yyyy");
    Date date = sdf.parse(input);
    sdf = new SimpleDateFormat("MMM d");
    System.out.println(sdf.format(date));
输出:
Jun 22

java.time 惯用的方法是将给定的日期时间字符串解析为
OffsetDateTime
(因为它有一个时区偏移量),并将生成的
OffsetDateTime
格式化为所需模式的
字符串

import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Locale;

public class Main {
    public static void main(String[] args) {
        String strDateTime = "Tue Jun 22 18:17:48 +0000 2010";
        DateTimeFormatter dtfInput = DateTimeFormatter.ofPattern("E MMM d H:m:s XX u", Locale.ENGLISH);

        ZonedDateTime odt = ZonedDateTime.parse(strDateTime, dtfInput);

        DateTimeFormatter dtfOutput = DateTimeFormatter.ofPattern("MMM dd", Locale.ENGLISH);
        String result = dtfOutput.format(odt);
        System.out.println(result);
    }
}
输出:

Jun 22

了解有关*的更多信息


*无论出于何种原因,如果您必须坚持使用Java6或Java7,您可以使用哪个backport将大部分Java.time功能移植到Java6&7。如果您正在为Android项目工作,并且您的Android API级别仍然不符合Java-8,请检查并确认。

java.time 惯用的方法是将给定的日期时间字符串解析为
OffsetDateTime
(因为它有一个时区偏移量),并将生成的
OffsetDateTime
格式化为所需模式的
字符串

import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Locale;

public class Main {
    public static void main(String[] args) {
        String strDateTime = "Tue Jun 22 18:17:48 +0000 2010";
        DateTimeFormatter dtfInput = DateTimeFormatter.ofPattern("E MMM d H:m:s XX u", Locale.ENGLISH);

        ZonedDateTime odt = ZonedDateTime.parse(strDateTime, dtfInput);

        DateTimeFormatter dtfOutput = DateTimeFormatter.ofPattern("MMM dd", Locale.ENGLISH);
        String result = dtfOutput.format(odt);
        System.out.println(result);
    }
}
输出:

Jun 22

了解有关*的更多信息


*无论出于何种原因,如果您必须坚持使用Java6或Java7,您可以使用哪个backport将大部分Java.time功能移植到Java6&7。如果您正在为Android项目工作,并且您的Android API级别仍然不符合Java-8,请检查并确认。

时间戳示例是否来自字符串?最初不是,但可以转换为字符串though@EdmundRojas见我的帖子。它使用
Calendar
来查找正确的日期。似乎您有一个
java.util.date
?对于新读者的问题,看看你是否可以避免。
Date
类设计拙劣,过时已久。相反,请使用
LocalDate
或中的其他适当类。时间戳示例是否来自字符串?最初不是,但可以转换为字符串though@EdmundRojas见我的帖子。它使用
Calendar
来查找正确的日期。似乎您有一个
java.util.date
?对于新读者的问题,看看你是否可以避免。
Date
类设计拙劣,过时已久。而是使用
LocalDate
或其他合适的类。这可能是我需要的答案!这可能是我需要的答案!如果您需要在日期上进行额外的处理,我喜欢这个答案,但是如果您只需要显示它,解析可能会导致性能下降,因此您希望使用简单的字符串。取决于你的用例。如果你想要的是字符串“Jun 22”,我会选择这个答案。如果您希望实际处理数据,则应使用日历对象,然后使用日历对象中的
get()
MONTH和
DATE
字段。应始终避免将结构化数据转换为字符串,然后再转换回结构化数据。@Avi Cherry时间戳可以直接传递到get对象,还是必须先通过其他方式进行格式化?无需格式化任何内容,您可以直接从日期对象设置日历对象的值。通常,您会调用
Calendar myCal=Calendar.getInstance()
,然后调用
myCal.setTime(date)
。(我不知道为什么没有
getCalendar()
将日期作为参数的方法。如果您需要对日期进行额外处理,我喜欢这个答案,但如果您只需要显示它,解析可能会导致性能下降,因此您希望使用简单字符串。这取决于您的使用情况。如果您需要的是字符串“Jun 22”我同意这个答案。如果你想实际处理数据,你应该使用日历对象,然后
get()
其中的
日期
字段。应始终避免将结构化数据转换为字符串,然后再转换为结构化数据。@Avi Cherry时间戳是否可以直接传递到get对象中,还是必须先通过其他方式进行格式化?无需格式化任何内容,您可以设置日历对象直接从Date对象中获取t的值。通常您会调用
Calendar myCal=Calendar.getInstance()
然后
myCal.setTime(Date)
(我不知道为什么没有一个
getCalendar()
方法将日期作为参数。