【问题标题】:BluePrism Reading data from excel datetime shiftsBluePrism 从 excel 日期时间转换中读取数据
【发布时间】:2017-09-02 21:55:27
【问题描述】:

关键字:DataTable、DateTime、BluePrism
情况:将excel文件中的数据读入数据表,日期时间发生变化。
示例:我有一个简单的 excel 文件,其中包含下表:

ID | Date
1    03-07-2015
2    07-05-1998
3    11-11-1987

使用此方法 (Read xls file to Import to DataTable ) 将 excel 文件读入 c# DataTable 后,我得到下表:

ID | Date
1    2/7/2015 9:00:00 PM
2    6/5/1998 9:00:00 PM
3    10/11/1987 10:00:00 PM

我的尝试:

  1. 以不同方式读取 excel 文件(不走运);
  2. 找出DataTable.Locale。当我在我的 c# 控制台上运行它时,区域设置是我计算机的区域设置 - da-DK。但是,当我在 Blue Prism 的代码阶段运行相同的函数时,语言环境更改为 en-US。我尝试在 BluePrism 中将其更改为 da-DK,但日期时间解析不受影响。

当我只使用 c# 导入 excel 时,它工作正常。但是,当我在 Blue Prism 上运行完全相同的代码时,情况并非如此。我知道当字符串被转换为日期时间时,它被设置为date 00:00:00 <PM|AM>. 为什么在减法的过程中会发生我无法理解的事情。

【问题讨论】:

  • 时区差异。
  • 您是否尝试过内置 bo 将 ms excel 文件读入集合?
  • 是的,我做到了。 BO的行动是使用我在问题中链接的方法进行的。时差仅在我如前所述在 Blue Prism 上运行代码时发生,而在 C# DateTime 中转换顺利。
  • 这是一个 Blue Prism 功能/错误,正如 Vesnog 回答的那样。它已在 BP6 中修复。

标签: c# excel datetime datatable blueprism


【解决方案1】:

我有同样的问题,但它是使用 CStr 函数解决的,它保留了 excel 文件中的原始值。

例子:

Select CStr([Start Pay period]) as [Start Pay Period] From [Worksheet$]

【讨论】:

    【解决方案2】:

    我假设您在本地时间设置为 UTC +3 的计算机上运行 Blue Prism 对象。 Blue Prism 始终将通过各种渠道检索到的日期时间变量转换为 UTC 值;因此它从原始条目中减去 3 小时。这些渠道可能是 MS Excel、SQL 查询、文本文件等。

    如果您将日期时间变量存储在文件中,使用它存储回来并再次调用它,就会变得特别成问题。然后 Blue Prism 将执行连续减法。处理此问题的最佳方法是在您检索它们时将 LocalTime() - UTCTime() 添加到每个 datetime 项。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-05
      • 2016-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-03
      • 1970-01-01
      相关资源
      最近更新 更多