从月份名称中获取月份编号

新手上路,请多包涵

我有这个。

 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    String monthName = br.readLine();

如何获取包含在 monthName 变量中的月份数?谢谢!

原文由 Dmitry 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 430
2 个回答

使用 Java 的 日历 类。它可以将任何给定的字符串解析为有效的日历实例。这是一个例子(假设月份是英文的)。

 Date date = new SimpleDateFormat("MMMM", Locale.ENGLISH).parse(monthName);
Calendar cal = Calendar.getInstance();
cal.setTime(date);
println(cal.get(Calendar.MONTH));

您可以在 SimpleDateFormat 中指定语言:

 String monthName = "März"; // German for march
Date date = new SimpleDateFormat("MMMM", Locale.GERMAN).parse(monthName);
Calendar cal = Calendar.getInstance();
cal.setTime(date);
println(cal.get(Calendar.MONTH));

默认情况下,Java 使用用户的本地来解析字符串。

请记住,计算机从 0 开始计数。因此,一月将为 0。如果您想要一个人类可读的日期,您应该格式化日历实例:

 SimpleDateFormat inputFormat = new SimpleDateFormat("MMMM");
Calendar cal = Calendar.getInstance();
cal.setTime(inputFormat.parse(monthName));
SimpleDateFormat outputFormat = new SimpleDateFormat("MM"); // 01-12
println(outputFormat.format(cal.getTime()));

原文由 Matt3o12 发布,翻译遵循 CC BY-SA 4.0 许可协议

Java 8 中针对英文月份名称的解决方案。

 private int getMonthNumber(String monthName) {
    return Month.valueOf(monthName.toUpperCase()).getValue();
}

原文由 Yuriy Tumakha 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题