【问题标题】:How to get a date out of Gregorian String?如何从公历字符串中获取日期?
【发布时间】:2015-08-08 06:56:30
【问题描述】:
public Calendar getDateAfterXYearYMonthZDays(Calendar calendar) {

        Calendar c=Calendar.getInstance();
        c.add(Calendar.DATE, 3);
        c.add(Calendar.YEAR, 2);
        c.add(Calendar.MONTH,1);

        return c; 
    }

我得到一个公历字符串,但我想要“2015 年 8 月 22 日星期六 22:07:27 IST”,并且也应该在上述方法中返回。

【问题讨论】:

  • 如果要返回字符串,需要更改方法签名。
  • “我得到一个公历字符串” - 你是什么意思? (您的方法根本没有返回字符串...)
  • 你的方法参数应该是String,返回类型应该是Date
  • 看到我的问题陈述是我必须添加 X 个月、Y 天、Z 年,在类图中我有这个方法 public Calendar getDateAfterXYearYMonthZDays(Calendar calendar) 我已经在我正在使用 sysout 打印它的主要课程,并通过他们获得公历。
  • @SidharthKhera 感谢您参与 StackOverflow。通常,如果您编辑您的问题以提供澄清而不是作为 cmets 发布,则此站点会更好地工作。查找问题文本和标签下方的“编辑”链接(如果使用网络浏览器)。您最初的问题是明确添加月/日。另外,请在发布前搜索 StackOverflow。您的问题已经被多次询问和回答。

标签: java date calendar gregorian-calendar


【解决方案1】:

问题不清楚,但据我了解,您有一个 Calendar 并且您希望将 String 排除在外。首先将您的方法签名更改为返回String,然后从Calendar 获取Date 实例并使用SimpleDateFormatter 格式化Date

此外,您从不使用方法参数calendar。在将其作为参数传递之前进行初始化。

public String getDateAfterXYearYMonthZDays(Calendar calendar) {

    calendar.add(Calendar.DATE, 3);
    calendar.add(Calendar.YEAR, 2);
    calendar.add(Calendar.MONTH,1);

    SimpleDateFormat formatter=new SimpleDateFormat("E M d HH:mm:ss z d");
    return formatter.format(c.getTime() );        
}

【讨论】:

    【解决方案2】:

    您应该改用 JodaTime,因为它会为您省去很多麻烦。

    http://www.joda.org/joda-time/

    在 JodaTime 中,您可以执行以下操作,

    DateTime dateTime = new DateTime();
    String myDateTimeString = dateTime.toString("E M d HH:mm:ss z y");
    // myDateTimeString's value - Weekday Month Day Time TimeZone Year
    

    这是显示其他格式类型的文档页面。

    http://joda-time.sourceforge.net/apidocs/org/joda/time/format/DateTimeFormat.html

    JodaTime 还支持公历系统,并提供一些帮助方法来从 Calendar 转换为 JodaTime。

    【讨论】:

      【解决方案3】:

      您可以使用以下代码获取日期:

      public Date getDateAfterXYearYMonthZDays(String gregorianString) {
      
              SimpleDateFormat formatter=new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy");
      
              Date formattedDate = null;
      
              try {
                  formattedDate = formatter.parse(gregorianString);
              } catch (ParseException e) {
                  e.printStackTrace();
              }
      
              return formattedDate;
          }
      

      【讨论】:

        猜你喜欢
        • 2015-05-13
        • 2020-10-04
        • 1970-01-01
        • 2019-05-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多