【问题标题】:get present year value to string获取当前年份值到字符串
【发布时间】:2013-10-12 10:39:16
【问题描述】:

我需要以字符串形式获取当前年份值,所以我这样做了:

Calendar now = Calendar.getInstance();
DateFormat date = new SimpleDateFormat("yyyy");
String year = date.format(now);

它可以在 ubuntu 上运行,但不能在 Windows 7 上运行。

你知道为什么吗? 有没有更安全的方法来做到这一点?

谢谢

【问题讨论】:

  • “不工作”到底是什么意思?

标签: java calendar operating-system date-format


【解决方案1】:

怎么样

Date currentDate = new Date();
String currentYear = String.valueOf(currentDate.getYear());

【讨论】:

  • Date#getYear() 已弃用。
  • 还有,那是year-1900
【解决方案2】:

您可以使用Calendar#get(int field) 方法从Calendar 实例中简单地获取年份:

Calendar now = Calendar.getInstance();
int year = now.get(Calendar.YEAR);
String yearInString = String.valueOf(year);

【讨论】:

    【解决方案3】:

    试试

    Calendar now = Calendar.getInstance();
    String year = String.valueOf(now.get(Calendar.YEAR));
    

    【讨论】:

      【解决方案4】:

      你也可以这样做:

      String year = String.valueOf(Calendar.getInstance().get(Calendar.YEAR));
      

      【讨论】:

        【解决方案5】:
        String thisYear = new SimpleDateFormat("yyyy").format(new Date());
        

        【讨论】:

        • 你应该解释一下。
        • 我用这个。 SimpleDateFormat 使用日历。格式示例:SimpleDateFormat
        【解决方案6】:

        时区

        问题和接受的答案都忽略了时区问题。在新年时,年数会因您所在的时区而异。

        乔达时间

        捆绑的 java.util.Date 和 .Calendar 类是出了名的麻烦。避开他们。使用 Joda-Time 或 Java 8 中的新 java.time 包。

        Joda-Time 中的示例。

        DateTimeZone timeZone = DateTimeZone.forID( "Europe/Paris" );
        DateTime dateTime = DateTime.now( timeZone );
        int year = dateTime.year().get();
        

        【讨论】:

          【解决方案7】:

          Java 8:

          java.time.Year.now();
          

          这里是link

          【讨论】:

            【解决方案8】:

            在 Java 8 中有一个名为 java.time 的集合,您可以在其中轻松地从计算机时钟中获取当前年份。

            要将当前年份作为整数,您可以简单地编写:

            int thisYear = Year.now().getValue();
            

            将其作为字符串获取:

            String thisYear = Year.now().toString();
            

            【讨论】:

              【解决方案9】:
                //  enter code here
              Date date = new Date();
              DateFormat format = new SimpleDateFormat("yyyy");
              String year = format.format(date);
              

              【讨论】:

              • 这是一个低质量的答案。您没有描述这如何帮助解决问题,答案只是与原始 OP 几乎相同的代码,并且没有解释如何解决问题。
              【解决方案10】:

              在 Java 8 之前的 Java 版本中,您还可以使用 java.sql.Date 类。将年份转换为字符串和子字符串:

              String currentYear = new java.sql.Date(System.currentTimeMillis()).toString().substring(0, 4);
              

              【讨论】:

                猜你喜欢
                • 2019-06-22
                • 2011-08-25
                • 2014-07-20
                • 1970-01-01
                • 2010-09-13
                • 1970-01-01
                • 2020-12-19
                • 1970-01-01
                相关资源
                最近更新 更多