javascript - 如何在javascript中以dd-mm-yyyy显示dob?

标签 javascript date momentjs

如何在 javascript 中以 dd-mm-yyyy 显示 dob ?我以毫秒或长值从服务器获取数据。所以我使用 moment 以 DD-MMM-YYYY 格式显示 DOB ..有编辑 DOB 的选项,如果未以毫秒或长值更改到服务器,我还想发送更新值或相同的值。

我从服务器获取这个值

var x = '-2208988800000'
  var d = new Date(moment(new Date(parseInt(x)).toUTCString()).format('DD-MMM-YYYY'));

但是当我尝试将 dob 值发送到服务器而不像这样更改 DOB 时 向服务器发送长值

var x2 = moment(new Date(d).toUTCString()).format('x');

//X2 should give same value of x 

所以我无法向服务器发送正确的数据。请建议如何在 DD-MMM-YYYY 中显示 DOB 并以毫秒为单位发送值 这是我的代码 http://plnkr.co/edit/1VOQAH6Jk65QNNU2hYpN?p=preview

最佳答案

假设您的输入值确实如此处所示,一个字符串,其中包含基于 Unix 纪元(以毫秒为单位)的值,那么您可以执行以下操作:

var x = '-2208988800000';
var m = moment.utc(x, 'x')
var s = m.format('DD-MMM-YYYY'); //=> '01-Jan-1900'

您可以像这样转换回原始字符串:

var x = m.format('x');  //=> '-2208988800000'

如果您有一个数字而不是字符串,那么它将是:

var x = -2208988800000;
var m = moment.utc(x);
var s = m.format('DD-MMM-YYYY'); //=> '01-Jan-1900'

您可以使用 valueOf 函数转换回原始数字,或强制转换为数字:

var x = m.valueOf();   //=> -2208988800000
var x = +m;            // shorthand (same result)

您已经 118 岁了。 ;-)

<小时/>

也就是说,我不知道为什么你的生日是以毫秒为单位的。我倾向于同意 Tim MacCabe 在你的问题下的评论。出生日期不应以如此精确的方式存储,也不应分配给任何时间或调整为 UTC 或任何时区。存储诸如 1900-01-01 之类的值,而不是 -2208988800000。使用数据库支持的任何 DATE 类型,并将其作为 ISO8601 格式的字符串传输 ("1900-01-01")。如果需要,您可以重新格式化它,如下所示:

var x = '1900-01-01';
var m = moment(x);
var s = m.format('DD-MMM-YYYY');  //=> '01-Jan-1900'

返回:

var x = m.format('YYYY-MM-DD');  //=> '1900-01-01'

关于javascript - 如何在javascript中以dd-mm-yyyy显示dob?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53161449/

相关文章:

javascript - 将 Metabox 关联到 WordPress 中的自定义页面模板

java - 在java中将时间添加到现有时间

javascript - Typescript 中的日期时间时区转换问题

javascript - 使用momentjs如何获取今天的中午

javascript - 检测浏览器是否阻止弹出窗口

php - 使用 jquery post 将值发送到 php 文件

javascript - CSS Sprites 未在 Android 上显示

PHP和MYSQL根据日期查找记录

javascript - 以 javascript 格式获取当前日期和时间 : 2015-03-01 03:09:03

node.js - momentJS:从不同时区的日期获取错误的时间戳