首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >管理Javascript中的多种日期格式

问管理Javascript中的多种日期格式
EN

Stack Overflow用户
提问于 2017-03-21 19:36:39
回答 2查看 1.7K关注 0票数 0

类似的问题已经问了很多次了,但我找不到更具体的解决方案。我正在做的事情是:

  1. 我的HTML中有一个<input type="date">,当单击它时,会打开一个日期为dd/mm/yyyy格式的日历。
  2. 我将html5日期改为时间戳,由Date.parse(html5Date)发送到我的数据库,在服务器中,我修改日期并将其发送回我的角应用程序。
  3. 现在,我通过new Date(timestamp).To将时间戳转换为Date对象,在我所做的[date.getDate(), date.getMonth() + 1, date.getFullYear()].join('/')表中以人性化格式打印日期。
  4. 在编辑(PUT请求)时,我再次从HTML中捕获日期,将其转换为时间戳,将其发送到服务器,并将返回日期处理回html日期。
  5. 除此之外,我还在HTML中做了大量的功能,比如日期比较、在日期中添加小时、显示一天中的时间等等:
  6. 只是这些简单的操作超过120行代码,我认为这是荒谬的和容易出错的。我研究过棱角数据报警器,但这有点让人困惑。此外,有时HTML是对象类型,有时是字符串,因此Date.parse()会产生错误。
  7. 是否有任何开发人员友好的方法:复制HTML5日期(从datepicker) ->更改为时间戳(对于角和服务器)->格式时间戳返回到字符串/对象(用于html)?(谢谢:)

注意:角抛出许多令人讨厌的控制台错误,指出日期格式是错误的(为html日期类型),但并不阻止代码运行。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-21 20:06:55

听起来你在做很多转变。我认为应该只有一种方式来表示日期:作为编程语言中的Date对象。只有少数几个转变需要实现:

代码语言:javascript
复制
Date <=> Integer milliseconds since the epoch to pass to server
Date <=> String human-readable format to display to user

除此之外,任何事情都是自找麻烦。可以通过转换到int date.getTime()、比较和转换回Date来进行比较。加法也是一样。请注意,Date.parse的实现取决于它将接受什么,尽管它们都将接受ISO8601格式的日期字符串这意味着您必须手动处理字符串转换,如下所示:

代码语言:javascript
复制
var toDate = str => {
   var splitter = str.indexOf("/") === -1 ? "-" : "/";
   var [mon, day, year] = str.split(splitter);
   return new Date(year, mon - 1, day);
};

var toDateString = date => {
  return "" + date.getFullYear() + (date.getMonth() + 1) +...
};

请注意,没有验证,这是留给读者的练习。

关于MOMENT.JS的一个词

moment.js太棒了。它也很大,它是一个厨房-洗涤API与重量相匹配。您已经在加载角,所以在使用另一个大型库扩展负载大小之前要仔细考虑。

票数 1
EN

Stack Overflow用户

发布于 2017-03-21 19:45:17

Moment.js是一个功能强大的数据格式和操作库。在Moment.js中,您可以做的很多事情都是一行代码,这使得生活变得更加简单。我同意,如果不使用像这样的库,格式化和处理可能会很痛苦。

http://momentjs.com/

编辑: fyi,我使用这个与我的角度应用程序,并发现它非常有用!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42936617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档