javascript - 澄清一些关于 moment.js 的疑虑

标签 javascript datetime momentjs

由于对 moment.js 的一些疑问,我陷入了我的项目。我在这里陈述一下我在项目后端编写过程中得出的一些结论,如果有问题,请有人纠正我?

例如,如果我从 fronted 获取日期时间字符串,格式为: “THU 18 MAR 2017 09:20 AM”,我应该创建 moment 对象,将此字符串传递给它以及相应的标记“ddd DD MMM YYYY HH:mm A”,因为传递的字符串不是标准 ISO 8601 格式。

var datetime = moment(datetimeFromFrontend, "ddd DD MMM YYYY HH:mm A");

现在我有了可以按照我想要的方式格式化的 moment 对象,在 moment 对象上调用 format() 函数。 如果我一般想对日期时间进行一些操作(例如,与今天的日期时间进行比较,或仅比较时间部分),是否必须将所有操作日期时间、时间或其他内容转换为具有相同格式的时刻对象并使用 isBefore、isEqual 和等等,或者我可以使用 >、<、<=、=< 来比较它们吗?

如果我需要将(>、<等)日期时间或只是时间部分与从 SQL 数据库检索的值(DATETIME 或 TIME 数据类型)进行比较,我是否应该将两个比较值传递给 moment 对象,将它们转换为相同的格式然后进行操作?

如何保存到 SQL 数据库中 DATETIME 或 TIME 类型的列?应该使用 format() 从 moment 对象到字符串进行一些转换吗? SQL会自动将传递的字符串转换为相应的数据类型吗?

示例:

var now = moment();

我假设“now”不能直接传递给sql查询,因为它是时刻对象,它应该转换为字符串(并依赖SQL从string/nvarchar自动转换为日期时间)或者我应该将其另存为moment().toDate() ?

最佳答案

If I need to compare (>, < etc) datetime or just time part with value retrieved from SQL database (which is DATETIME or TIME data type), should I pass both comparing values to moment object, convert them in same format and then do manipulations?

您可能想查找相关文档 您有Query functions可以比较时刻甚至日期对象,例如,这是 .after 函数的条目

moment().isAfter(Moment|String|Number|Date|Array);

如您所见,您可以将任何内容传递给 .isAfter,它会为您完成这项工作

moment().isAfter(new Date(2017, 2, 4))
// true
moment(new Date(2016, 2, 4)).isAfter(new Date(2017, 2, 4))
// false

当然,比较 >、< 或 === 的最简单方法是使用 Date::getTime 获取时间戳,但这是丑陋的代码

And how to save to SQL database column which is DATETIME, or TIME type? Should do some transforms from moment object to string using format()? SQL will automatically convert passing string to corresponding data type?

我认为这取决于你的SQL如何工作以及你的服务器如何与其通信,ORACLE,你应该引用有关在sql中存储日期对象的任何文档,最终日期和格式都是为了使unix时间戳人类可读/理解.

I assume that "now" can't be passed to sql query directly as it is moment object, it should be converted to string (and rely on SQL automatic conversion from string/nvarchar to datetime) or should I save it as moment().toDate() ?

问问自己,您或任何可能使用您的 API 的人将从数据库中获取不可知的日期对象而不是简单的严格格式的字符串,从而获得什么样的好处?

关于javascript - 澄清一些关于 moment.js 的疑虑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42877290/

相关文章:

javascript - 为什么我的网站不更新文字颜色?

javascript - 如何在 HTA 中获取文件的关联图标 (HTML/Javascript/VBScript)

java - Simpledateformat 解析然后格式化日期不匹配

javascript - Momentjs 弃用错误和不同的浏览器功能

momentjs - Moment.js toISOString 结果不同?

javascript - 当属性被访问但对象中不存在时抛出错误

javascript - 从 chrome 打印对话框中禁用打印选项

python - pandas datetime 将星期日设置为一周的第一天

java - 从 Instant.now() 生成的日期中提取日期、小时和分钟

javascript - MomentJS 问题处理 2 月 29 日不是闰年