当前位置: 首页 > 知识库问答 >
问题:

我想更改给定时区的日期格式。我已经尝试使用简单日期格式,但仍然失败[重复]

糜雪峰
2023-03-14

日期是Wed Jun 21 14:14:23 GMT 08:00 2017,我想将其转换为2017-06-21

这是我的代码:

String date = "Wed Jun 21 14:14:23 GMT+08:00 2017";
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMMM dd HH:mm:ss 'Z'");
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
SimpleDateFormat outputDate = new SimpleDateFormat("yyyy-MM-dd");
Date d = null;
try {
    d = sdf.parse(date);
} catch (ParseException e) {
    e.printStackTrace();
}

共有3个答案

易博文
2023-03-14

试试这个,你想怎么做就怎么做。

String input_date = "Wed Jun 21 14:14:23 GMT+08:00 2017";
SimpleDateFormat fromthis = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzzz yyyy", Locale.ENGLISH);
SimpleDateFormat tothis = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
Date date = null;
try {
       date = fromthis.parse(input_date);
    } catch (ParseException e) {
       e.printStackTrace();
    }
String result = tothis.format(date);
System.out.println(result);

输入:2017年6月21日星期三14:14:23 GMT 08:00

产出: 2017-06-21

谢谢你。

夏昊
2023-03-14

试试这个工作完美

String  formatDate = "Wed Jun 21 14:14:23 GMT+08:00 2017";
        java.text.SimpleDateFormat dateTimeFormat = new java.text.SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy" , Locale.ENGLISH);
        java.text.SimpleDateFormat dateFormat = new java.text.SimpleDateFormat("yyyy-MM-dd",Locale.ENGLISH);

        Date date = null;
        try {
            date = dateTimeFormat.parse(formatDate);
        } catch (ParseException e) {
            e.printStackTrace();
        }

        String format = dateFormat.format(date);

        Log.d("===========>>>>>",format);
燕飞文
2023-03-14

首先,我建议您停止使用旧的日期简单日期格式类。它们已经过时了,充满了错误和设计问题,并被新的日期/时间API所取代。

如果您正在使用Java8,请考虑使用新的Java。时间API。

如果你用Java

下面的代码适用于两者。唯一的区别是包名称(在 Java 8 中是 java.time,在三十号回移植(或Android的三十进制)中是组织.三十号.bp),但类和方法名称是相同的。

要解析所需的字符串,只需创建DateTimeFormatter并设置java.util。将Locale设置为英语,以确保工作日和月份名称(在您的示例中,Wed,和Jun)被正确解析。如果不设置区域设置,将使用系统的默认设置(如果默认设置不是英语,则无法工作)。

String date = "Wed Jun 21 14:14:23 GMT+08:00 2017";
// create formatter (using English locale to make sure weekdays and month names are parsed correctly)
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss zzz yyyy", Locale.ENGLISH);
// parse local date
LocalDate dt = LocalDate.parse(date, fmt);
System.out.println(dt.toString()); // 2017-06-21

输出为:

2017-06-21

 类似资料:
  • 我正在尝试将DatePicker日期格式化为简单的数据格式(“yyyy-MM-dd HH: mm: ss Z”)。有人告诉我,我需要使用简单的数据格式将其解析为日期对象-简单的数据格式(“yyyy-MM-dd”),然后将其格式化为我需要的内容,如下所示。但是,我在尝试捕捉块中收到错误“重复局部变量eDate”。任何专家都可以查看我的代码并提出建议吗? 已更新

  • 在我的脚本标记中,var today显示在2019年9月7日星期六00:00:00 GMT 0530(印度标准时间)的日期格式中,我想将此日期格式更改为yyyy mm dd格式。 我的代码: 我试着这样做: 如何使用strotime()更改日期格式?

  • 问题内容: 我试图改变对象的格式,我试图以这种方式做到这一点: 但这对对象没有任何影响,仍然是旧格式,无法真正理解为什么会这样。 问题答案: 请尝试将两个概念区分开:您的数据和向用户呈现的数据(或用于其他目的的格式设置,例如包含在JSON中)。的保持值7可以表示为(格式化成)7,07,007或7,同时仍保持刚好相同的值而没有任何格式化信息- 外的格式化谎言。同样,a 具有一个时间点,它可以表示为(

  • 问题内容: 我想获取一个新对象并对其应用。我想做类似的事情: 我无法执行此操作,因为今天是,并且返回。我也尝试过: 这不是一个很好的解决方案,因为当我今天尝试在其他地方使用Java时,它抱怨今天可能尚未实例化。什么是更改Date对象格式的好方法(同时仍将其保留为Date对象,而不是将其转换为字符串)? 问题答案: 您正在错误地查看格式和日期。 日期不包含格式。日期只是一个包含日期信息的类,例如日期

  • 我有一个变量在一个类在测试情况下,我需要嘲笑它。我尝试过这样 但事实的确如此 giving me无法将给定对象格式化为日期 在一台机器和另一台机器上 它给我的日期不能为空。 我是Junit新手,需要帮助解决这个问题

  • 我有Date对象的格式 我是怎么做到的?。 我试着用这个代码 当我试着做一个测试时,我会得到这样的结果: 我的问题是在sql将java.util.date更改为java.sql.date时出现的 我解决了这个问题,所以: 和测试: