js中如何获取当年的最后一天

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js中如何获取当年的最后一天相关的知识,希望对你有一定的参考价值。

<html xmlns="http://www.w3.org/1999/xhtml" >
<meta charset="UTF-8">
<head>
<title>获取当年当月最后一天日期</title>
<script language="javascript">
function getLastDay()
  var year = document.getElementById('year').value;
  var month = document.getElementById('month').value;
  var new_year = year; //取当前的年份
  var new_month = month++;//取下一个月的第一天,方便计算(最后一天不固定)
  if(month>12)//如果当前大于12月,则年份转到下一年
    new_month -=12; //月份减
    new_year++; //年份增
  
  var new_date = new Date(new_year,new_month,1); //取当年当月中的第一天
  return (new Date(new_date.getTime()-1000*60*60*24)).getDate();//获取当月最后一天日期

</script>
<body>
year:<input id="year" value="" type="text">
<br />
mont:<input id="month" value="" type="text">
<br />
<input id="Button1" type="button" value="最后一天" onClick="alert(getLastDay())" />
</body>
</html>

追问

就是当年的12月31日 需要输出的格式为****-12-31 能再详细讲解一下吗 谢谢啦

追答

你的年份是自己输入,还是自动根据电脑时间获取的?

自动获取:

var  day = new Date(year,month,0);   
var lastdate = year + '-' + 12+ '-' + 31;

追问

var s =new Date().getFullYear()+"-12-31";
var d = new Date(Date.parse(s.replace(/-/g, "/")));
年份是自动获取的 这两个语句实现啦 不过这个最后的转化成date类型的没见过 大神见过吗?

追答

parse() 方法可解析一个日期时间字符串,并返回 1970/1/1 午夜距离该日期时间的毫秒数。返回的是到年底的毫秒数,

参考技术A new Date(year + 1, 0, 0) 搞定!

如何使用 Moment.js 获取今天和每月最后一天之间的天数?

【中文标题】如何使用 Moment.js 获取今天和每月最后一天之间的天数?【英文标题】:How do I get the days between the today's day and the last day of the month using Moment.js? 【发布时间】:2022-01-13 17:23:57 【问题描述】:

这是我现在拥有的代码:

  const moment = require('moment')
    const m = moment


    const currDay = m().format('D')
    const dayOfWeek = m().format('dddd')
    const daysInMonth = m().daysInMonth()

    const startOfMonth = moment().startOf('month').format('YYYY-MM-DD hh:mm');
    const endOfMonth   = moment().endOf('month').format('YYYY-MM-DD hh:mm');

我需要创建一个日历行,其中第一项是今天的日期,其余日历项将是根据当前月份剩余的天数,因此我可以在两者之间呈现每一天我使用 Vue 编写的 HTML。

示例:周三 8、周四 9、周五 10 ... 周五 31。

【问题讨论】:

【参考方案1】:

我认为 OP 被过早格式化的常见错误绊倒了。 format 可以很好地看到中间结果,但这样做会产生一个不利于额外计算的字符串。

尽量只处理日期对象。仅当您必须:(a) 呈现给人类读者,或 (b) 序列化以进行存储或传输时才转换为字符串。

在不格式化的情况下工作...

const daysRemainingThisMonth = moment().endOf('month').diff(moment(), 'days');
console.log(`There are $daysRemainingThisMonth days remaining this month`)
&lt;script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"&gt;&lt;/script&gt;

【讨论】:

【参考方案2】:

就像 POJS 等价物一样,如果您有一个函数可以返回该月的最后一天,您可以使用它并获取两个日期之间的差异,例如

function getMonthEnd(date = new Date()) 
  return new Date(date.getFullYear(), date.getMonth() + 1, 0);


function getMonthDaysLeft(date = new Date()) 
  return getMonthEnd(date).getDate() - date.getDate();


let d = new Date();
console.log(`There are $getMonthDaysLeft(d) days left in $d.toLocaleString('en',month:'long').`);

要获得剩余天数的列表/数组,只需循环一个日期,一次添加 1 天,然后将所需格式的日期写入列表:

function getMonthDaysLeftAsList(date = new Date()) 
  let d = new Date(+date);
  // Formatter
  let f = new Intl.DateTimeFormat('en',
    day: 'numeric',
    month: 'short'
  );
  let m = d.getMonth();
  let dayList = [];
  while (d.getMonth() == m) 
    dayList.push(f.format(d));
    d.setDate(d.getDate() + 1);
  
  return dayList;


console.log(getMonthDaysLeftAsList());

【讨论】:

以上是关于js中如何获取当年的最后一天的主要内容,如果未能解决你的问题,请参考以下文章

js代码实现,如何获取当前月份的最后一天

sql如何取某年某月的第一天和最后一天

js如何获取上个月第一天和最后一天

如何使用js获取某月的第一天和最后一天

如何获取当年的第一个和最后一个日期?

sql 语句 怎么获取指定月的第一天和最后一天?