如何在 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/