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



如何在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 epoch的值,那么您可以这样做:

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'

最新更新