Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何用javascript在dd-mm-yyyy中显示dob?_Javascript_Date_Momentjs - Fatal编程技术网

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

如何用javascript在dd-mm-yyyy中显示dob?,javascript,date,momentjs,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')); 但当我

如何在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,并以毫秒为单位发送值 这是我的密码

假设您的输入值确实如图所示,一个字符串包含一个以毫秒为单位的基于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 = '1900-01-01';
var m = moment(x);
var s = m.format('DD-MMM-YYYY');  //=> '01-Jan-1900'
如果您有一个数字而不是字符串,那么它将是:

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岁了


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

var x = m.format('x');  //=> '-2208988800000'
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'

假设您的输入值确实如图所示,一个字符串包含一个以毫秒为单位的基于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 = '1900-01-01';
var m = moment(x);
var s = m.format('DD-MMM-YYYY');  //=> '01-Jan-1900'
如果您有一个数字而不是字符串,那么它将是:

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岁了


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

var x = m.format('x');  //=> '-2208988800000'
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'

您的代码正在通过“时刻”设置日期格式,但随后它会右转并从该字符串生成一个新的日期对象。@Joy将您的帖子标记为版主干预。这个问题结构合理,遵循Stack Overflow的结构合理的帖子,如果有人要否决投票,至少留下一个理由。我投了赞成票以抵消反对票。我认为最好的解决方案是不要在数据库中存储以毫秒为单位的出生日期。你可能不在乎你的用户是在几毫秒内出生的,所以这是浪费空间——只需存储日期即可。如果您使用的是SQL,请使用日期类型。在
new DATE(moment(new DATE(parseInt(x)).toutString()).format('DD-MMM-YYYY'))
中,您将字符串转换为日期,然后转换为字符串,再转换为矩对象,再转换为字符串,然后再转换为日期。它相当于
新日期(parseInt(x))
。假设d的格式为YYYY-MM-DD,那么
时刻(new Date(d).toutString())。格式('x')
相当于
+新日期(d)
新日期(d).getTime()
。您的代码正在通过“时刻”设置日期格式,但随后它会右转并从该字符串生成一个新的日期对象。@Joy将您的帖子标记为版主干预。这个问题结构合理,遵循Stack Overflow的结构合理的帖子,如果有人要否决投票,至少留下一个理由。我投了赞成票以抵消反对票。我认为最好的解决方案是不要在数据库中存储以毫秒为单位的出生日期。你可能不在乎你的用户是在几毫秒内出生的,所以这是浪费空间——只需存储日期即可。如果您使用的是SQL,请使用日期类型。在
new DATE(moment(new DATE(parseInt(x)).toutString()).format('DD-MMM-YYYY'))
中,您将字符串转换为日期,然后转换为字符串,再转换为矩对象,再转换为字符串,然后再转换为日期。它相当于
新日期(parseInt(x))
。假设d的格式为YYYY-MM-DD,那么
时刻(新日期(d).toutString())。格式('x')
相当于
+新日期(d)
新日期(d).getTime()