【问题标题】:c# Smartsheet API Display Datec# Smartsheet API 显示日期
【发布时间】:2018-09-24 17:33:25
【问题描述】:

我编写了一个 C# 程序,它从 SmartSheet 中提取数据,然后将数据插入 SQL 数据库。除日期外,一切都运行良好。我已经搜索了这个站点以及其他站点,了解如何以可以加载到 SQL 数据库中的格式提取日期信息。我对 SmartSheet 的 API 小组有一个悬而未决的问题。 SmartSheet 的联系人承认他们没有关于如何执行此功能的文档。有关于如何格式化数据以插入工作表的文档,但没有如何格式化数据以从 Smartsheet 中提取日期格式。有人可以帮忙吗?谢谢。

【问题讨论】:

  • 日期字段数据是什么样的?
  • 在 SmartSheet 中定义为日期字段,格式为 mm/dd/yy。当我使用 DisplayValue 时,它​​的值始终为 null。文档指出 DisplayValue 不起作用。我只需要知道使用什么命令来提取任何数字格式的数据,然后程序就可以格式化日期。
  • 听起来numericDates=true 查询参数可能很有用。您可以将其与您的读取请求(如 GET 表)一起传回 API。
  • 你能发布你用来尝试检索日期的代码吗?

标签: c# smartsheet-c#-sdk-v2


【解决方案1】:

您是否已经阅读过 Smartsheet API 文档的Dates and Times section?以下是相关摘录:

Smartsheet API 返回 UTC 时区中的所有日期和时间 ISO-8601 format,即YYYY-MM-DDTHH:MM:SSZ

还有一个查询参数 (numericDates=true),如果您想以 Unix 纪元时间接收日期,您可以随请求一起传递。

您是否有不想将 ISO-8601 日期存储在 SQL 数据库中的原因?该格式包含您将来可能需要的所有信息。您还可以在存储日期之前或之后应用所需的任何日期格式逻辑。

【讨论】:

  • 我已阅读该部分。我仍然不知道如何处理日期。 numericDates 参数似乎仅适用于将参数添加到 URL。我想以任何格式将日期提取到我的 c# 程序中。我正在使用 API 来寻址一行 statusCellTask​​ 中的单元格。我是否需要使用其他东西,或者在加载工作表时是否需要将日期格式的参数设置为数字?
【解决方案2】:

我是 c# 和 .net 的新手,所以我想这只是我。但这里有答案。

statusCellTask = getCellByColumnName(row, "Start");
 var varStart = statusCellTask.Value;
 if (varStart is null
{ command.Parameters.AddWithValue("@sqlStart", ""); }
else
{
string Start = varStart.ToString();
command.Parameters.AddWithValue("@sqlStart", Start);
}

我希望这对我一直在努力的人有所帮助。

【讨论】:

  • 感谢您跟进解决方案。教别人是巩固所学内容的好方法。您能否针对问题所在添加更多背景信息?
【解决方案3】:

泰勒的回答是正确的。您可以传递numericDates 查询参数来获取数字时期值。也就是说,如果您更喜欢使用 ISO-8601 字符串,可以使用 C# 方法将其转换为其他格式。然后,您可以转换为您的 SQL 数据库的任何要求。

var convertedTime = DateTime.ParseExact(cellDateValueString, "YYYY-MM-DDTHH:MM:SSZ", CultureInfo.InvariantCulture);

【讨论】:

  • 我很抱歉无法表达我的问题。我正在尝试从 SmartSheet 单元格中提取日期。无论我做什么,我总是收到 null。如何将日期值放入 cellDateValueString。
  • 啊,这和你问的很不一样。请发布您用来尝试从 Smartsheet 检索值的代码。
  • foreach(sheet.Rows 中的行){ statusCellTask​​ = getCellByColumnName(row, "Start");字符串开始 = statusCellTask​​.Value.ToString ; if (Start == DateTime.MinValue && Start == DateTime.MaxValue) { command.Parameters.AddWithValue("@sqlStart", Start); } else { command.Parameters.AddWithValue("@sqlStart", ""); }j 其中 Start 是一个日期。
  • 我希望 sn-p 有所帮助。如果需要,我可以添加更多代码。
  • // 加载整个工作表 var sheet = ss.SheetResources.GetSheet( sheetId, // long sheetId null, // IEnumerable 包括 null, // IEnumerable 不包括 null, / / IEnumerable rowIds null, // IEnumerable rowNumbers null, // IEnumerable columnIds null, // Nullable pageSize null // Nullable page );
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-18
  • 1970-01-01
  • 2021-12-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多