【问题标题】:Clever way to separate year, month and day from date string?从日期字符串中分离年、月和日的巧妙方法?
【发布时间】:2014-03-30 16:07:20
【问题描述】:

我有日期字符串,格式如下:2014-Mar-30。我想把它分成 3 个字符串:2014, Mar, 30。有什么聪明的方法吗? (java)

【问题讨论】:

标签: java android string date


【解决方案1】:

试试这个方法:

String[] arr = strDate.split("-");
String strYear = arr[0];
String strMonth = arr[1];
String strDay = arr[2];

【讨论】:

  • 一个小问题:可以说,strYear 和 strDay 应该是整数。
  • 否:OP 说:I want to separate it into 3 strings: 2014, Mar, 30 - 所以他/她只想要 3 个字符串
  • 操作错误。 :-) 半认真地,当 int 明显优越时,为什么要将年份和日期作为字符串?你想比较一个月中的哪一天?字符串不能可靠地工作(如果它们省略了前导 0)。你想知道2222还有多少年吗?字符串是额外的工作。 Java 是强类型的,int 显然是这种情况下有用的类型。当程序员无缘无故地将所有内容都变成字符串时,我真的很讨厌。或者,在这种情况下,是一个消极的原因。
  • 是的,你是对的。我还将您的愿景扩展到本月。但是我是谁来讨论他/她的意愿呢?他/她想要字符串?我给他/她的字符串... ;)
【解决方案2】:

对于您的具体情况,快速而肮脏的方法是使用String.split('-')。 (如@Vyger)

但是,更可靠的方法可能是使用正则表达式并搜索连续 4 个数字、连续 3 个字母以及剩余的任何内容(1 或 2 个数字)。这样你就可以处理很多似是而非的替代方案,比如

“2014 年 3 月 30 日”甚至“2014 年 3 月 30 日”

【讨论】:

    【解决方案3】:

    我倾向于使用这样的东西。

    String totalString = "2014-Mar-30";
    String yearString = totalString.substring(0, totalString.indexOf('-'));
    String monthString = totalString.substring(totalString.indexOf('-') + 1, totalString.lastIndexOf('-'));
    String dayString = totalString.substring(totalString.lastIndexOf('-') + 1);
    

    希望这会有所帮助:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-19
      • 1970-01-01
      • 2012-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-13
      相关资源
      最近更新 更多