【问题标题】:get year, month, day and time form "Tue, 12 Jan 2016 09:40:07 GMT" in Java/Android [duplicate]在 Java/Android 中获取年、月、日和时间形式“Tue, 12 Jan 2016 09:40:07 GMT” [重复]
【发布时间】:2016-04-16 22:49:05
【问题描述】:

我知道这类问题在很多网站上问了很多时间。 直到我没有得到解决方案,这就是我在这里提出这个问题的原因。

我想要日期格式的年、月、日、日期和时间

格林威治标准时间 2016 年 1 月 12 日星期二 09:40:07

我正在从 HttpResponse 标头中获取此日期格式,并且需要此日期格式的年、月、日、日期。

以下代码我正在使用但没有获得真正的价值:

SimpleDateFormat dateFormat = new SimpleDateFormat("E, dd MMM yyyy HH:mm:ss Z");
Date date;
try {
date = dateFormat.parse(header.getValue());// here we are getting date in format "Tue, 12 Jan 2016 09:40:07 GMT"
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);

System.out.println("YEAR: " + calendar.YEAR);
System.out.println("MONTH: " + calendar.MONTH);
System.out.println("DATE: " + calendar.DATE);

} catch (ParseException e) {
e.printStackTrace();
}

我也试过这个:

1.

Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT"));

2.

Calendar calendar = Calendar.getInstance();
calendar.setTimeZone(TimeZone.getTimeZone("GMT"));

但以上所有代码都给出以下结果:

YEAR: 1
MONTH: 2
DATE: 5

【问题讨论】:

  • 仅供参考,java.util.Datejava.util.Calendarjava.text.SimpleDateFormat 等麻烦的旧日期时间类现在已被 java.time 类所取代。大多数 java.time 功能在 ThreeTen-Backport 项目中被反向移植到 Java 6 和 Java 7。在ThreeTenABP 项目中进一步适用于早期的Android。见How to use ThreeTenABP…

标签: java date simpledateformat android-date


【解决方案1】:

您正在使用 calendar.YEARcalendar.MONTHcalendar.DATE,Calendar 类包含静态 YEAR, MONTH and DATE 变量,因此它会打印这些变量的值即 1,2 和 5。 而不是它使用这个:

System.out.println("YEAR: " + calendar.get(Calendar.YEAR));
System.out.println("MONTH: " + calendar.get(Calendar.MONTH));
System.out.println("DATE: " + calendar.get(Calendar.DATE));

【讨论】:

  • @Jaiprakesh..thanks...现在它的工作...
  • 仅供参考,java.util.Datejava.util.Calendarjava.text.SimpleDateFormat 等麻烦的旧日期时间类现在已被 java.time 类所取代。大多数 java.time 功能在 ThreeTen-Backport 项目中被反向移植到 Java 6 和 Java 7。在ThreeTenABP 项目中进一步适用于早期的Android。见How to use ThreeTenABP…
【解决方案2】:

将日历实例的时区设置为 GMT。

SimpleDateFormat dateFormat = new SimpleDateFormat("E, dd MMM yyyy HH:mm:ss Z");
    Date date;
    try {
    date = dateFormat.parse(header.getValue());// here we are getting date in format "Tue, 12 Jan 2016 09:40:07 GMT"
    Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT")); // set correct timezone to calendar
    calendar.setTime(date);

    System.out.println("YEAR: " + calendar.YEAR);
    System.out.println("MONTH: " + calendar.MONTH);
    System.out.println("DATE: " + calendar.DATE);

    } catch (ParseException e) {
    e.printStackTrace();
    }

【讨论】:

  • ...感谢您的回复.. 我进行了更改: Calendar calendar = Calendar.getInstance(); calendar.setTimeZone(TimeZone.getTimeZone("GMT"));但直到没有返回真正的价值。
  • 必须是Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT"))
  • 您机器的时区是多少?你能在这里发布输出堆栈吗
  • 我的机器时区UTC+05:30 ...请在编辑后的问题中找到输出
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-26
  • 2016-11-06
  • 1970-01-01
  • 2017-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多