如何从该日期格式“星期三1月30日00:00:00 GMT + 02:00 2019”中获取命名日期名称(如(星期三-星期四)
答案 0 :(得分:1)
您似乎拥有的是java.util.Date
类的一个实例。那是一个设计欠佳的类,已经过时了,所以第一件事就是看看您是否可以避免这种情况,而是从现代的Java日期和时间API java.time中获取一个类的实例。
但是,如果您是从旧版API中获得Date
的,而您现在无法更改或不想更改它,那么第一件事就是将其转换为现代Instant
,然后进一步执行从那里转换。以下代码段使用ThreeTenABP,更多内容在下面。
Date yourOldfashionedDate = getFromLegacyApi();
Instant modernInstant = DateTimeUtils.toInstant(yourOldfashionedDate);
String dayName = modernInstant.atZone(ZoneId.systemDefault())
.getDayOfWeek()
.getDisplayName(TextStyle.FULL, Locale.ENGLISH);
System.out.println("Day name is " + dayName);
根据问题的日期给出输出:
日期名称为星期三
如果您得到的是String
(可能是从Date.toString
返回的字符串),则需要先对其进行解析:
DateTimeFormatter dateFormatter
= DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss zzz yyyy", Locale.ROOT);
String dateString = "Wed Jan 30 00:00:00 GMT+02:00 2019";
ZonedDateTime dateTime = ZonedDateTime.parse(dateString, dateFormatter);
String dayName = dateTime.getDayOfWeek()
.getDisplayName(TextStyle.FULL, Locale.ENGLISH);
您看到最后一点与以前完全一样。
是的,java.time在较新和较旧的Android设备上均可正常运行。它只需要至少 Java 6 。
yourOldfashionedDate.toInstant()
而不是DateTimeUtils.toInstant(yourOldfashionedDate)
。org.threeten.bp
导入日期和时间类。java.time
。java.time
。java.time
向Java 6和7(JSR-310的ThreeTen)的反向端口。答案 1 :(得分:0)
您可以使用SimpleDateFormat
,全日名称的格式部分为EEEE
。
希望对您有帮助!
答案 2 :(得分:0)
您首先需要使用String
将Calendar
解析为SimpleDateFormat
对象:
Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.ENGLISH);
try {
cal.setTime(sdf.parse("Wed Jan 30 00:00:00 GMT+02:00 2019"));
} catch (ParseException e) {
// Log invalid date format
}
然后从您的Calendar
对象中提取日期:
String day = cal.getDisplayName(Calendar.DAY_OF_WEEK,Calendar.LONG,Locale.ENGLISH);
答案 3 :(得分:0)
##在这里,我附加了一个方法,该方法将为您提供预期的输出##
public void dayName(){
String weekDay,time;
SimpleDateFormat dayFormat = new SimpleDateFormat("EEEE MMM dd HH:mm", Locale.US);
SimpleDateFormat dayFormat1 = new SimpleDateFormat("hh:mm yyyy", Locale.US);
dayFormat.setTimeZone(TimeZone.getTimeZone("ITC"));
dayFormat1.setTimeZone(TimeZone.getTimeZone("GMT"));
Calendar calendar = Calendar.getInstance();
weekDay = dayFormat.format(calendar.getTime());
time=dayFormat1.format(calendar.getTime());
Log.e(TAG, "dayName: "+weekDay+" GMT+"+time );// out put looks like : Tuesday Jan 29 17:58 GMT+05:58 2019
}