【问题标题】:Convert six digits to date将六位数字转换为日期
【发布时间】:2020-09-19 06:22:38
【问题描述】:

我正在尝试将六位数的字符串转换为有效日期 例子: 121200 适用于 12 / 12 / 2000 另一个例子: 140585 适用于 14/ 05 / 1985

我可以使用 DateValue 函数和 CDate 但对我来说问题是如何确定正确的世纪部分 .. 我的意思是如何确定最后两个数字之前是 20 还是 19 .. 我试过这样的线

Debug.Print Format("140585", "dd/mm/yyyy")

但这会打印 26/11/2284

【问题讨论】:

标签: excel vba


【解决方案1】:

我会使用Format在此处添加斜线,然后使用DateValue

Debug.Print Format("1405085", "00\/00\/00") '<~ returns 14/05/85

稍微详细一点:

Dim textDate as String
textDate = "140585"
textDate = Format(textDate, "00\/00\/00")

Dim realDate as Date
realDate = DateValue(textDate)

Debug.Print realDate  '<~ returns 14/05/1985

请参阅this,了解 Excel 如何处理两位数年份数字并转换为适当的世纪。

【讨论】:

  • 非常感谢,但这不会返回 19 或 20 .. 我想决定其中一个
  • 因此链接 - 使用 DateValue 转换为日期,然后让 Excel 为您处理逻辑。它将根据该文章中列出的规则确定日期……因此您根本不必担心世纪。
  • 实际上是一个日期。在即时窗口中:? DateSerial(2015, 2, 29) - 返回 01/03/2015。
  • 那是 Excel 应用自己的逻辑并试图理解日期......无论如何,你的问题到底是什么?这似乎是比您发布的小问题更大的任务。如果是关于验证用户输入或潜在的日期输入,那么是的,听起来您还有一些工作要做。
  • 简而言之,6 位数字不足以完整验证日期值,除非来源保证每个数字都位于一致的位置。如前所述,如果这个 6 位字符串是用户输入的,而不是来自已经自动化的程序,那么始终获得 100% 准确的转换将非常困难。
猜你喜欢
  • 2021-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-15
相关资源
最近更新 更多