【问题标题】:Convert Javascript date to shorter date time and also UTC [duplicate]将Javascript日期转换为更短的日期时间以及UTC [重复]
【发布时间】:2017-09-18 23:14:50
【问题描述】:

我有一个 JavaScript 日期,我想将它放入 SQL Server 日期时间字段。

发送过来的 JavaScript 时间

Fri Sep 15 2017 00:11:44 GMT-0700 (US Mountain Standard Time)

我希望它在 javascript 或 C# 中转换

  1. 我需要日期是这样的

    2017-09-15 23:47:01 
    

或许

9/15/2017 11:47:01 PM
  1. 我还需要将其转换为 UTC,不确定在 javascript 或 C# 中是否更容易

我的代码是哪种格式? “9 月 15 日星期五 ..” ??

对于 UTC,我看到了这样的代码

 var isoDate = new Date('yourdatehere').toISOString();

(我正在使用 Angular 4 / Typescript 做 .net core web api)

【问题讨论】:

  • 我知道这可能看起来微不足道,但处理日期和时间真的很困难,我建议您将其留给moment.js 来为您处理。如果从字符串中删除“(美国山地标准时间)”,应该很容易。
  • 这是一个简单的正则表达式,它基本上提取了 ISOString 的位 -> new Date('Fri Sep 15 2017 00:11:44 GMT-0700 (US Mountain Standard Time)').toISOString().replace(/(^\d{4}-\d{2}-\d{2})T(\d{2}:\d{2}:\d{2})(.*)$/,'$1 $2')
  • 但这会创建2017-09-15T07:11:44.000Z

标签: javascript .net angular date typescript


【解决方案1】:

正如 Keith 所说,在 javascript 中处理日期确实很困难,尤其是考虑到跨浏览器的非常不同的实现。所以我会支持他们的意见:只需使用 moment.js 并将所有内容留给该库。它真的很强大。使用它,您可以获得您可能想到的任何日期格式。要获得“2017-09-15 23:47:01”,您只需要以下内容(请注意限定符区分大小写!):

var fmt = moment(<your_js_date_if_you_have_it>).format("YYYY-MM-DD HH:mm:ss");

您可以找到所有受支持的限定符here

除了格式化这个库还允许您对日期进行大量操作、比较它们、将日期从本地转换到 UTC 时区并返回等等。

【讨论】:

  • 我不能使用 moment.js ......遗憾的是,安全团队拒绝了 99% 的包......我过去使用过它。
  • 哇...有人有比我更严格的安全规则...好吧,那么您唯一可行的选择就是自己编写类似 moment.js 的东西,但这将是一个大问题痛苦 - 我试过了...... :(
猜你喜欢
  • 2012-10-01
  • 2020-09-05
  • 2016-02-28
  • 2016-06-17
  • 1970-01-01
  • 2012-10-07
  • 1970-01-01
  • 1970-01-01
  • 2014-06-13
相关资源
最近更新 更多