英文:
Converting a string month in to an integer aka may to 5 within android studio
问题
int month_int;
switch (month) {//3 letter string input
case "Jan": month_int= 1; break;
case "Feb": month_int= 2; break;
case "Mar": month_int= 3; break;
case "Apr": month_int= 4; break;
case "May": month_int= 5; break;
case "Jun": month_int= 6; break;
case "Jul": month_int= 7; break;
case "Sep": month_int= 9; break;
case "Oct": month_int= 10;break;
case "Nov": month_int= 11;break;
case "Dec": month_int= 12;break;
default: month_int= 0; break;//Error
}
return month_int;
英文:
How can I simply convert a string containing a variable of a month to a integer value?
I can do something like below but it seems like there should be a more efficient method to do so.
int month_int;
switch (month) {//3 letter string input
case "Jan": month_int= 1; break;
case "Feb": month_int= 2; break;
case "Mar": month_int= 3; break;
case "Apr": month_int= 4; break;
case "May": month_int= 5; break;
case "Jun": month_int= 6; break;
case "Jul": month_int= 7; break;
case "Sep": month_int= 9; break;
case "Oct": month_int= 10;break;
case "Nov": month_int= 11;break;
case "Dec": month_int= 12;break;
default: month_int= 0; break;//Error
}
return month_int;
My input is a three letter string which I need to be converted to an int. Aka 1-12.
答案1
得分: 4
给定输入的格式是ISO MMM,就使用它
private static final DateTimeFormatter MONTH_FORMAT = DateTimeFormatter.ofPattern("MMM", Locale.ENGLISH); // 支持 Jan、Feb 等
MONTH_FORMAT.parse("Feb").get(ChronoField.MONTH_OF_YEAR); // 2
Month month = Month.from(MONTH_FORMAT.parse("Feb")); // java.time.Month.FEBRUARY
很容易得到月份的数字(2),但更好的方法是获得Month
枚举,因为这鼓励您继续使用java.time
API 来解决日历问题!
英文:
Given the incoming format is ISO MMM, go with that
private static final DateTimeFormatter MONTH_FORMAT = DateTimeFormatter.ofPattern("MMM", Locale.ENGLISH); // supports Jan, Feb etc
MONTH_FORMAT.parse("Feb").get(ChronoField.MONTH_OF_YEAR); // 2
Month month = Month.from(MONTH_FORMAT.parse("Feb")); // java.time.Month.FEBRUARY
It's easy to get the month number (2) but likely better to get the Month
enum as that encourages you to continue using java.time API solve calendar problems!
答案2
得分: 1
你可以创建一个从字符串到月份值的映射,其中字符串是你要查找的键,而Month是相对于该键的月份。
Map<String, Month> monthsByDisplay = Stream.of(Month.values())
.collect(Collectors.toMap(m -> m.getDisplayName(TextStyle.SHORT, Locale.ENGLISH), Function.identity()));
Month month = monthsByDisplay.get("Jan");
if (month == null) {
throw new IllegalStateException("unexpected date key");
}
int monthValue = month.getValue();
英文:
You could create a Map of String to Month values where String is the key you're looking for and Month is the relative month to the key.
Map<String, Month> monthsByDisplay = Stream.of(Month.values())
.collect(Collectors.toMap(m -> m.getDisplayName(TextStyle.SHORT, Locale.ENGLISH), Function.identitity());
Month month = monthsByDisplay.get("Jan");
if (month == null) {
throw new IllegalStateException("unexpected date key");
}
int monthValue = month.getValue();
答案3
得分: 1
你应该使用java.time.Month枚举(请参阅此处的javadoc)。getValue()
方法将为您提供月份的数值,范围为1-12。
英文:
You should use java.time.Month Enum (See javadoc here). method getValue()
will give you your numeric value of the month 1 - 12
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论