【问题标题】:How to convert String to LocalDate format without using any formatter and string methods如何在不使用任何格式化程序和字符串方法的情况下将字符串转换为 LocalDate 格式
【发布时间】:2017-12-27 19:37:38
【问题描述】:

字符串值="2017/3/4"; 我想要 LocalDate 格式的字符串值,例如“2017-03-04” 如何在不使用任何格式化程序和字符串方法(如 split()、indexof())的情况下将此值转换为我的本地日期。

【问题讨论】:

  • 不清楚。我们可以使用String.length()String.charAt()String.toCharArray() 吗?甚至可能是String.replace()String.replaceAll()?是否允许LocalDate.parse(CharSequence)(其实现使用格式化程序)?恐怕我们需要准确地说明限制条件。
  • 你试过什么?如果您告诉我们您的尝试以及这些尝试是如何不足或失败的,或者您的卡在哪里,您将自己了解更多,同时获得更好的帮助。
  • 如果你不能使用来自Stringany方法,你甚至不能get它的值——你需要至少让它开始做任何事情。如果您指定可以使用哪些方法,提供更多上下文(为什么您有这样的限制,或者您到底想解决什么),最好是minimal reproducible example,这会增加每个人更好地理解问题并找到一个答案。
  • 不要使用任何字符串方法。有没有什么方法可以在没有格式化程序的情况下进行转换?
  • 输入 = 2017/5/22 输出 = 2017-05-22。这是我想说的

标签: string date string-formatting localdate


【解决方案1】:

简单方法:使用String.replace(char oldChar, char newChar) 将斜杠替换为连字符。请记住,replace 不会更改您的字符串,而是返回一个带有更改的新字符串。然后使用LocalDate.parse(CharSequence text) 将新字符串解析为LocalDateStringCharSequence,所以这行得通)。

如果不允许使用String.replace(),请使用String.toCharArray() 转换为char[]。遍历此数组并将每个斜线替换为连字符。然后通过String(char[] value) 构造函数构建一个新字符串。然后如上进行。或者,使用StringBuilder(CharSequence seq) 构造函数从原始字符串创建StringBuilder,遍历它并用连字符替换每个斜线。然后您可以简单地将StringBuilder 传递给LocalDate.parse(),因为这也是CharSequence。编辑:请注意,最后一种方法根本不直接使用 any String 方法,所以也许这就是预期的(StringBuilder 构造函数间接使用 String.length()String.getChars()) .

如果您也不允许使用LocalDate.parse(),因为它隐含使用DateTimeFormatter,那么您需要自己从字符串中提取日期、月份和年份。这有点复杂。如果这是必要的并且您需要帮助,请告诉我们,我会解释。

正如@Hugo 所说,如果不允许您直接或间接地使用任何 String 方法或任何格式化程序,那么就没有办法。

【讨论】:

    猜你喜欢
    • 2015-03-26
    • 2013-09-24
    • 2021-12-14
    • 1970-01-01
    • 2020-08-04
    • 2011-04-12
    • 2018-11-30
    • 2014-06-28
    • 1970-01-01
    相关资源
    最近更新 更多