如何从JavaScript日期中删除时间部分?

Phi*_*gan 16 javascript

我有一个'12/12/1955 12:00:00 AM' '12/12/1955 12:00:00 AM'存储在'12/12/1955 12:00:00 AM'.我想显示'12/12/1955 12:00:00 AM'没有'12/12/1955 12:00:00 AM'.我该怎么做呢?

我没有使用任何第三方库而不是jQuery!

Ibr*_*han 18

拆分它,space并采取如下的第一部分.希望这会帮助你.

var d = '12/12/1955 12:00:00 AM';
d = d.split(' ')[0];
console.log(d);
Run Code Online (Sandbox Code Playgroud)

  • 如果您要使用日期,请不要建议像这样的字符串操作. (19认同)
  • @iambriansreed:时区的问题正好*你正避免使用字符串操作.而且,正如我对该答案所评论的那样,它并不能保证在符合标准的JavaScript环境中工作(如果环境决定将其解析为"MM/DD/YYYY"和"DD/MM/YYYY"中的错误,那就更糟了! `基于用户的语言环境 - 您能否告诉我是否有任何浏览器已经这样做了?).如果您需要认真的约会工作,请使用moment.js. (3认同)
  • 当然,它可能_工作_,通常情况下,仅仅获取日期部分并不是您需要做的唯一事情。当您最终需要将日期用于其他目的时,将其解析为 Date 对象会有所帮助。 (2认同)
  • 像这样的答案正是初级开发人员做愚蠢事情的原因。JavaScript具有Date对象是有原因的。如果您的字符串表示Date,则将其转换为Date对象,然后对其进行操作。请参见下面的@Cerbrus答案 (2认同)

Cer*_*rus 17

将该字符串解析为Date对象:

var myDate = new Date('12/12/1955 12:00:00 AM');
Run Code Online (Sandbox Code Playgroud)

然后用通常的方法来获得日期的//.

  • 偶然?这是_all_ browsers支持的常用格式.这不是巧合. (7认同)
  • @ RyanO'Hara:名称_one_浏览器无法(正确)解析此格式的日期字符串. (5认同)
  • 您试图告诉我,我的答案在某种程度上是不正确的,因为日期字符串不是标准的一部分.但是所有浏览器都支持它._"更轻松,更快"_不一定_"更好"_.教导用户正确地解析日期可以帮助他在将来更多地处理日期.只是拆分字符串只能帮助他处理这种特殊情况. (5认同)
  • 只有一种日期格式需要 JavaScript 实现才能解析,但事实并非如此。https://es5.github.io/#x15.9.1.15 (3认同)
  • 完成答案后,应将其标记为正确答案。展开“然后使用通常的方法来获取日期的日/月/年。” (3认同)
  • 教用户以偶然的方式解析日期不是我同意的,抱歉。最好从精确格式解析日期的一部分,然后在需要时构造它。 (2认同)

Mon*_*nti 10

这也许是最有效的解决方案。

var date = new Date().toLocaleDateString();
Run Code Online (Sandbox Code Playgroud)

示例代码如下:

var dateToday = '2/19/2022, 12:00:00 AM';
var date = new Date(dateToday).toLocaleDateString();
console.log(date); // Output: 2/19/2022
Run Code Online (Sandbox Code Playgroud)

文档:MDN Web 文档 - Date.prototype.toLocaleDateString()


Vij*_*ale 5

这可能是最简单的方法:

new Date(<your-date-object>.toDateString());
Run Code Online (Sandbox Code Playgroud)

示例:要获取没有时间部分的当前日期:

new Date(new Date().toDateString());
Run Code Online (Sandbox Code Playgroud)

给:2019年7月11日星期四00:00:00 GMT-0400(东部夏令时间)


小智 5

以前的答案很好,只是添加了我首选的处理方式:

var timePortion = myDate.getTime() % (3600 * 1000 * 24);
var dateOnly = new Date(myDate - timePortion);
Run Code Online (Sandbox Code Playgroud)

如果你从一个字符串开始,你首先需要像这样解析它:

var myDate = new Date(dateString);
Run Code Online (Sandbox Code Playgroud)

如果您遇到我遇到的与时区相关的问题,这应该可以解决它:

var timePortion = (myDate.getTime() - myDate.getTimezoneOffset() * 60 * 1000) % (3600 * 1000 * 24);
Run Code Online (Sandbox Code Playgroud)