【问题标题】:Android convert DateFormatSymbols to intAndroid 将 DateFormatSymbols 转换为 int
【发布时间】:2014-01-16 20:04:31
【问题描述】:

我知道这件事已经处理了很多次,但我无法解决。 我正在使用以下代码将月份视为字符串:

@Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View row = super.getView(position, convertView, parent);

            final String month = new DateFormatSymbols(Locale.getDefault()).getMonths()[position].toUpperCase();
            TextView tvMonth = (TextView) row.findViewById(R.id.tv_mese);
            tvMonth.setText(month);

我现在想花一个月的时间。我尝试使用 SimpleDateFormat 但无济于事。 谢谢

【问题讨论】:

  • 你说的“整个月花”是什么意思
  • 对不起,我错了。我需要将月份(名称)字符串转换为(数字)Int
  • 为什么不直接使用position + 1

标签: android string date int


【解决方案1】:

你的问题有点不清楚,所以如果我误解了它,我提前道歉。我假设您想要月份的数字(即 1 是一月,2 是二月,等等)。

最容易做的事情(正如@waqaslam 也提到的),就是取 position 的值,然后加一个。所以,这将是你的 sn-p 代码的最后一行:

 int monthAsWhole = position + 1;

一种替代方法,尽管要复杂得多,是执行以下操作。

 @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View row = super.getView(position, convertView, parent);

        final String month = new DateFormatSymbols(Locale.getDefault()).getMonths()[position].toUpperCase();

        Date date = new SimpleDateFormat("MMMMMMMMM", Locale.ENGLISH).parse(month);
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        int theMonth = cal.get(Calendar.MONTH);
        TextView tvMonth = (TextView) row.findViewById(R.id.tv_mese);
        tvMonth.setText(month);

在这里,SimpleDateFormat 会将您的最后一个字符串月份解析为日期变量。然后,日历变量将使用日期,并调用该日历变量的 Calendar.MONTH 常量本质上将返回一个整数,即您的月份变量。一月为 0,二月为 1,以此类推。

由于字符串变量month本质上不是包含整数的字符串,因此无法对其进行解析。将像 FEBRUARY 这样的字符串转换为字符串的最实用和合理的方法是将其转换为相关月份的数字表示形式。

希望这会有所帮助!

【讨论】:

  • 我重复我的问题:我将月份作为格式如下的字符串:String month = new DateFormatSymbols(Locale.getDefault()).getMonths()[position].toUpperCase(); 现在我想将其转换为整数,我该怎么做?谢谢
猜你喜欢
  • 2011-10-13
  • 2017-04-25
  • 1970-01-01
  • 2019-06-18
  • 2012-04-27
  • 1970-01-01
  • 1970-01-01
  • 2017-08-02
  • 1970-01-01
相关资源
最近更新 更多