【问题标题】:Convert String month to integer java将字符串月份转换为整数java
【发布时间】:2023-03-13 04:54:01
【问题描述】:

如何将月份字符串转换为整数?

点击方法我想显示被选中的日期,但如果日期有事件,它应该显示更多关于事件的信息。检查假日事件的方法需要整数值。

代码如下:

更新:

@Override
public void onClick(View view)
    {
        int m = 0;
        int d, y;
        String date_month_year = (String) view.getTag();
        selectedDayMonthYearButton.setText("Selected: " + date_month_year);

        String [] dateAr = date_month_year.split("-");
        Log.d(tag, "Date Split: " + dateAr[0] + " " + dateAr[1] + " " + dateAr[2]);
        y = Integer.parseInt(dateAr[2]);



        try {
            Calendar c1 = Calendar.getInstance();
            c1.setTime(new SimpleDateFormat("MMM").parse(dateAr[1]));
            m = c1.get((Calendar.MONTH) + 1);
        } 
        catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        //int m = Integer.parseInt(dateAr[1]);
        d = Integer.parseInt(dateAr[0]);
        Log.d(tag, "Date forward: " + d + " " + m + " " + y);

        if (isHoliday(d, m, y))
        {
            Intent i = new Intent(view.getContext(), HijriEvents.class);
            i.putExtra("date_string", date_month_year);
            startActivity(i);

        }


        try
            {
                Date parsedDate = dateFormatter.parse(date_month_year);
                Log.d(tag, "Parsed Date: " + parsedDate.toString());

            }
        catch (ParseException e)
            {
                e.printStackTrace();
            }
    }

    public Boolean isHoliday(int d, int m, int y)
    {
        HijriCalendar hijri = new HijriCalendar(y, m, d);
        if (!hijri.checkIfHoliday().contentEquals(""))
            return true;
        return false;
    }

【问题讨论】:

  • 你可以使用 SimpleDateFormat 并使用格式 MM 作为月份,你会得到你的日期月份作为数字,然后用 split() 方法分割它

标签: java android date datetime calendar


【解决方案1】:
Calendar cal = Calendar.getInstance();
cal.setTime(new SimpleDateFormat("MMM").parse("July"));
int monthInt = cal.get(Calendar.MONTH) + 1;

【讨论】:

  • 它抛出这个错误:Unhandled exception type ParseException 即使我用try and catch修复它,它也会抛出一个错误。
  • 我不知道为什么,但是 logcat 将月份整数显示为 26 而不是 7。
  • @input : 你有一组括号在错误的地方...m = c1.get((Calendar.MONTH) + 1);。将其更改为...m = c1.get(Calendar.MONTH) + 1;
  • @input : Calendar.MONTH 是 0x02 的 int 常量。你所做的基本上是get((2) + 1),即get(3)。常量值 0x03 实际上是 Calendar.WEEK_OF_YEAR 这就是为什么你得到 26。
  • 非常感谢@Squonk!非常感谢!
【解决方案2】:

只有 12 个月,所以只需规范化字符串并进行字符串比较。我不会尝试过度优化。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-23
    • 1970-01-01
    • 2016-10-14
    • 1970-01-01
    • 2020-11-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多