数据库中的数据是这样的
2011-09-07 14:43:22.520
但我的 Web API 输出数据并将空格替换为字母 T
2011-09-07T14:43:22.520
我可以在 jquery 中再次用空格替换字母 T,但是我可以从 Web API 解决这个问题吗(让 Web API 输出原始数据?)
我也不想要最后的毫秒数。我怎样才能摆脱它们?
最佳答案
您在数据库中查看日期的格式通常是无关紧要的,因为它应该作为 DateTime 而不是作为 string 传递到 .Net 中。 (如果您将其作为 varchar 存储在数据库中,则会遇到更大的问题。)
ASP.Net WebAPI 以 ISO8601 定义的格式返回值和 RFC3339 .这是一件好事,因为它是公认的机器可读格式。您可能不想更改它。
如果你真的想改变它,你需要实现一个自定义的 JSON.Net JsonConverter,派生自 DateTimeConverterBase。这是讨论here和 here .
但是,您应该考虑如何在客户端应用程序中使用实际结果。你提到了 jQuery,所以我假设你的消费者是 JavaScript。在许多浏览器中,您拥有的 ISO8601 值已经被 JavaScript Date 构造函数识别,因此您可以这样做:
var dt = new Date("2011-09-07T14:43:22.520");
但是这个won't work in all browsers . Date 在格式化方面没有很大的灵 active 。因此,您可能需要考虑一个库,例如 moment.js .准备就绪后,您可以执行以下操作:
var m = moment("2011-09-07T14:43:22.520");
var s = m.format("YYYY-MM-DD HH:mm:ss"); // output: "2011-09-07 14:43:22"
请注意,此处的格式字符串符合 moment.js,而非 .NET。区分大小写存在差异。请引用the moment.js documentation了解详情。
另一件事 - 由于您提供的值末尾没有 Z,也没有诸如 -07:00 之类的偏移量,然后我假设它来自 DateTime whos .Kind 值是 DateTimeKind.Unspecified。您应该知道,当它被发送到 JavaScript(或与此相关的任何其他地方)时,没有关于表示哪个时区的信息。 JavaScript 将采用浏览器 的本地时区。
如果这不是您想要的,那么您需要将 UTC 值存储在您的数据库中,并确保它们具有 DateTimeKind.Utc,以便使用 Z 对其进行序列化> 最后。 JavaScript 会将其规范化为浏览器的时区,但您仍会及时谈论同一时刻。
或者,您可以使用 DateTimeOffset 类型 - 它将使用特定的偏移量进行序列化。 JavaScript 仍会将其规范化为用户的时区。
关于javascript - Asp-net web api 输出带有字母 T 的日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18137950/
为了将Cucumber用于命令行脚本,我按照提供的说明安装了arubagem。它在我的Gemfile中,我可以验证是否安装了正确的版本并且我已经包含了require'aruba/cucumber'在'features/env.rb'中为了确保它能正常工作,我写了以下场景:@announceScenario:Testingcucumber/arubaGivenablankslateThentheoutputfrom"ls-la"shouldcontain"drw"假设事情应该失败。它确实失败了,但失败的原因是错误的:@announceScenario:Testingcucumber/ar
我正在使用puppet为ruby程序提供一组常量。我需要提供一组主机名,我的程序将对其进行迭代。在我之前使用的bash脚本中,我只是将它作为一个puppet变量hosts=>"host1,host2"我将其提供给bash脚本作为HOSTS=显然这对ruby不太适用——我需要它的格式hosts=["host1","host2"]自从phosts和putsmy_array.inspect提供输出["host1","host2"]我希望使用其中之一。不幸的是,我终其一生都无法弄清楚如何让它发挥作用。我尝试了以下各项:我发现某处他们指出我需要在函数调用前放置“function_”……这
这里是Ruby新手。完成一些练习后碰壁了。练习:计算一系列成绩的字母等级创建一个方法get_grade来接受测试分数数组。数组中的每个分数应介于0和100之间,其中100是最大分数。计算平均分并将字母等级作为字符串返回,即“A”、“B”、“C”、“D”、“E”或“F”。我一直返回错误:avg.rb:1:syntaxerror,unexpectedtLBRACK,expecting')'defget_grade([100,90,80])^avg.rb:1:syntaxerror,unexpected')',expecting$end这是我目前所拥有的。我想坚持使用下面的方法或.join,
我想设置一个默认日期,例如实际日期,我该如何设置?还有如何在组合框中设置默认值顺便问一下,date_field_tag和date_field之间有什么区别? 最佳答案 试试这个:将默认日期作为第二个参数传递。youcorrectlysetthedefaultvalueofcomboboxasshowninyourquestion. 关于ruby-on-rails-date_field_tag,如何设置默认日期?[rails上的ruby],我们在StackOverflow上找到一个类似的问
这是一道面试题,我没有答对,但还是很好奇怎么解。你有N个人的大家庭,分别是1,2,3,...,N岁。你想给你的大家庭拍张照片。所有的家庭成员都排成一排。“我是家里的friend,建议家庭成员安排如下:”1岁的家庭成员坐在这一排的最左边。每两个坐在一起的家庭成员的年龄相差不得超过2岁。输入:整数N,1≤N≤55。输出:摄影师可以拍摄的照片数量。示例->输入:4,输出:4符合条件的数组:[1,2,3,4][1,2,4,3][1,3,2,4][1,3,4,2]另一个例子:输入:5输出:6符合条件的数组:[1,2,3,4,5][1,2,3,5,4][1,2,4,3,5][1,2,4,5,3][
我需要检查DateTime是否采用有效的ISO8601格式。喜欢:#iso8601?我检查了ruby是否有特定方法,但没有找到。目前我正在使用date.iso8601==date来检查这个。有什么好的方法吗?编辑解释我的环境,并改变问题的范围。因此,我的项目将使用jsapiFullCalendar,这就是我需要iso8601字符串格式的原因。我想知道更好或正确的方法是什么,以正确的格式将日期保存在数据库中,或者让ActiveRecord完成它们的工作并在我需要时间信息时对其进行操作。 最佳答案 我不太明白你的问题。我假设您想检查
我的日期格式如下:"%d-%m-%Y"(例如,今天的日期为07-09-2015),我想看看是不是在过去的七天内。谁能推荐一种方法? 最佳答案 你可以这样做:require"date"Date.today-7 关于ruby-检查日期是否在过去7天内,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/32438063/
我有一个驼峰式字符串,例如:JustAString。我想按照以下规则形成长度为4的字符串:抓取所有大写字母;如果超过4个大写字母,只保留前4个;如果少于4个大写字母,则将最后大写字母后的字母大写并添加字母,直到长度变为4。以下是可能发生的3种情况:ThisIsMyString将产生TIMS(大写字母);ThisIsOneVeryLongString将产生TIOV(前4个大写字母);MyString将生成MSTR(大写字母+tr大写)。我设法用这个片段解决了前两种情况:str.scan(/[A-Z]/).first(4).join但是,我不太确定如何最好地修改上面的代码片段以处理最后一种
这个问题在这里已经有了答案:Railsformattingdate(4个答案)关闭4年前。我想格式化Time.Now函数以显示YYYY-MM-DDHH:MM:SS而不是:“2018-03-0909:47:19+0000”该函数需要放在时间中.现在功能。require‘roo’require‘roo-xls’require‘byebug’file_name=ARGV.first||“Template.xlsx”excel_file=Roo::Spreadsheet.open(“./#{file_name}“,extension::xlsx)xml=Nokogiri::XML::Build
我正在尝试解析一个CSV文件并使用SQL命令自动为其创建一个表。CSV中的第一行给出了列标题。但我需要推断每个列的类型。Ruby中是否有任何函数可以找到每个字段中内容的类型。例如,CSV行:"12012","Test","1233.22","12:21:22","10/10/2009"应该产生像这样的类型['integer','string','float','time','date']谢谢! 最佳答案 require'time'defto_something(str)if(num=Integer(str)rescueFloat(s