【问题标题】:How to convert month in String to month in DateTime?如何将字符串中的月份转换为日期时间中的月份?
【发布时间】:2020-03-01 10:47:40
【问题描述】:

我在下拉列表中显示所有月份名称,值存储在字符串列表中。

final List<String> _months = [
    "January",
    "February",
    "March",
    "April",
    "May",
    "June",
    "July",
    "August",
    "September",
    "October",
    "November",
    "December"
];

用户可以选择任何值,基于此,我想将其转换为数字月份,比如月份是三月,数值将为 3。当然,有一些方法可以完全不使用 DateTime,但是将其转换为 DateTime 后,我想做一些其他的事情。

DateTime 的parse 方法只接受一些特定的格式,并且这些格式不包括像 March 这样的简单月份字符串。

使用intl 包,任何日期时间都可以转换为显示数字月份数

DateFormat.M().format(DateTime.now())

但只有当我得到的字符串(例如“December”)可以转换为日期时间时才能完成。

【问题讨论】:

    标签: datetime flutter dart


    【解决方案1】:

    构造一个带有月份的DateTime

      final selected = _months[2];
    
      DateTime(2020, _months.indexOf(selected) + 1);
    

    【讨论】:

    • 我没有像 3 这样的索引。我只能访问二月、八月、十一月等字符串。
    • 我有一个包含所有 12 个月的下拉列表,并且用户选择了下拉项。用户可以选择 7 月,也可以选择 12 月。下拉列表的值不是数字,它与显示值相同。当然,我可以创建一个映射,键为数字,值为字符串文本,但这不是我想做的事情,除非这是唯一的方法。
    • DateTime(2020, _months.indexOf(selected = "March") + 1);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-16
    • 2018-12-24
    相关资源
    最近更新 更多