【问题标题】:Convert date format 01/05/2018 and 01/may/2018 to (dd/mm/yyyy) format and save same format into excel using c#将日期格式 01/05/2018 和 01/ma/2018 转换为 (dd/mm/yyyy) 格式,并使用 c# 将相同的格式保存到 excel 中
【发布时间】:2018-05-23 08:30:04
【问题描述】:

我有两种日期格式,例如 2018 年 1 月 5 日和 2018 年 5 月 1 日。我想将这两种格式都转换为 (dd/MM/yyyy),如何将其转换并保存到 excel 文件中。我在将数据保存到excel时遇到问题,保存格式不正确,它的变化像一个月先到,有时日期先到 代码是: - mystring=mystring.tostring.parse("dd/MM/yyyy")

【问题讨论】:

  • excel也有日期格式设置,你也考虑一下吗?
  • 你能提供一些代码吗?到目前为止,您尝试过什么?
  • 是的,我看到了,但我没有得到答案
  • @BagishOjha 让我们弄清楚,您已经成功地将日期字符串转换为正确的格式,对吧?但所有问题都在 excel 中,格式不正确?

标签: c#


【解决方案1】:

我遇到了类似的问题,我尝试了下面的代码

DateTime date = DateTime.Now;
string formattedDate = date.ToString("dd'/'MM'/'yyyy");

【讨论】:

  • 这无法编译...不能真正将String 设置为DateTime 对象
  • @JayV 根据您的 cmets 编辑。谢谢
【解决方案2】:

我相信你必须这样做:

targetRange.NumberFormat = "dd/MM/yyyy";

其中targetRange 是您希望具有所需日期格式的CellColumn

格式也必须是 Excel 可以理解的格式,这与 C# 使用的格式并不总是相同

【讨论】:

  • 我可以在哪里使用它在 excel 或我的分配字符串中
  • 您可以将此行放在代码中您在 Excel 电子表格中设置值的任何位置。通常在设置值后设置格式以确保 Excel 不会更改格式。如果您提供一个工作示例,我们可以建议更准确的潜在解决方案
【解决方案3】:

您可以在使用DateTime.ParseExact 时提供几个 formats。所以你可以解析初始字符串为DateTime,然后格式化DateTime为需要的格式。

  string[] tests = new string[] {
    "01/05/2018",
    "01/may/2018",
  };

  string[] formats = new string[] {
    "d/M/yyyy",    // try this format first
    "d/MMMM/yyyy", // on fail try this one etc.
  };

  string[] results = tests
    .Select(item => DateTime.ParseExact(item, 
                                        formats,
                                        CultureInfo.InvariantCulture, 
                                        DateTimeStyles.AssumeLocal))
    .Select(date => date.ToString("dd'/'MM'/'yyyy")) // '/' - to preserve / 
    .ToArray();

  Console.Write(Environment.NewLine, results);

结果:

01/05/2018
01/05/2018     

【讨论】:

  • 我不想使用 parseexact 方法
  • @BagishOjha 为什么不精确解析?
猜你喜欢
  • 1970-01-01
  • 2018-11-07
  • 1970-01-01
  • 1970-01-01
  • 2022-11-17
  • 2017-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多