JavaScript之通过年月获取月份的天数、日期格式化、时间、补零、Date、toLocaleString、Intl、DateTimeFormat、format(问题总结)

 更新时间:2024年03月06日 09:57:21   作者:牧码人MJ682517  
这篇文章主要介绍了JavaScript之通过年月获取月份的天数、日期格式化、时间、补零、Date、toLocaleString、Intl、DateTimeFormat、format的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧

版本一

function createDays(year = 2024, month = 2) {
    let sDate = new Date(year, month - 1, 1),
        eDate = new Date(year, month, 0),
        days = [];
    sDate = sDate.getDate();
    eDate = eDate.getDate();
    for (let i = sDate; i <= eDate; i++) {
        let ds = new Date(year, month - 1, i);
        ds = ds.toLocaleString("en-US", { timeZone: "Asia/Shanghai" });
        ds = ds.split(',')[0];
        ds = ds.split('/');
        [ds[0], ds[1], ds[2]] = [ds[2], ('0' + ds[0]).slice(-2), ('0' + ds[1]).slice(-2)];
        ds = ds.toString();
        ds = ds.replace(/,/g, '-');
        days.push(ds);
    }
    return days;
}
console.log(createDays(2023, 1));
console.log(createDays(2023, 2));
console.log(createDays());

版本二

function createDays(year = 2024, month = 2) {
    let sDate = new Date(year, month - 1, 1),
        eDate = new Date(year, month, 0),
        formatter = new Intl.DateTimeFormat('default', {
            timeZone: 'Asia/Shanghai',
            year: 'numeric',
            month: 'numeric',
            day: 'numeric'
        }),
        zeroFill = (val) => ('00' + val).slice(-2),
        days = [];
    sDate = sDate.getDate();
    eDate = eDate.getDate();
    for (let i = sDate; i <= eDate; i++) {
        let ds = new Date(year, month - 1, i);
        ds = formatter.format(ds);
        ds = ds.split('/');
        ds[1] = zeroFill(ds[1]);
        ds[2] = zeroFill(ds[2]);
        ds = ds.toString();
        ds = ds.replace(/,/g, '-');
        days.push(ds);
    }
    return days;
}
console.log(createDays(2023, 1));
console.log(createDays(2023, 2));
console.log(createDays());

版本三

function createDays(year = 2024, month = 2) {
    let sDate = new Date(year, month - 1, 1),
        eDate = new Date(year, month, 0),
        zeroFill = (val) => ('00' + val).slice(-2),
        days = [];
    sDate = sDate.getDate();
    eDate = eDate.getDate();
    for (let i = sDate; i <= eDate; i++) {
        let ds = new Date(year, month - 1, i);
        ds = ds.toLocaleString(
            "en-US",
            {
                timeZone: "Asia/Shanghai",
                year: 'numeric',
                month: 'numeric',
                day: 'numeric'
            }
        );
        ds = ds.split('/');
        [ds[0], ds[1], ds[2]] = [ds[2], zeroFill(ds[0]), zeroFill(ds[1])];
        ds = ds.toString();
        ds = ds.replace(/,/g, '-');
        days.push(ds);
    }
    return days;
}
console.log(createDays(2023, 1));
console.log(createDays(2023, 2));
console.log(createDays());

效果图

解析

Date

在JavaScript中,Date对象用于处理日期和时间。Date构造函数可以接受多种参数,这些参数用于初始化Date对象,从而表示特定的日期和时间。

无参数
new Date(): 创建一个表示当前日期和时间的Date对象。

整数参数
new Date(milliseconds): 以从1970年1月1日00:00:00 UTC起经过的毫秒数来创建日期对象。

日期字符串参数
new Date(dateString): 使用特定格式的字符串表示的日期和时间来创建Date对象。
例如: new Date("2024-03-05T12:00:00")

年、月、日等参数
new Date(year, monthIndex [, day [, hours [, minutes [, seconds [, milliseconds]]]]]): 使用特定的年、月、日等信息来创建Date对象。
月份从0开始,所以一月是0,二月是1,以此类推。

多个整数参数
new Date(year, monthIndex, day): 使用年、月、日创建Date对象。

ISO 格式字符串参数
new Date(ISOString): 使用ISO格式的字符串(符合规范的日期时间字符串)来创建Date对象。
例如: new Date(“2024-03-05T12:00:00Z”)

其他参数
还可以根据需要提供其他参数,如小时、分钟、秒和毫秒。

// 创建一个表示当前日期和时间的对象
var currentDate = new Date();
// 使用毫秒数创建一个日期对象
var dateFromMilliseconds = new Date(1629194400000);
// 使用字符串创建一个日期对象
var dateFromString = new Date("2024-03-05T12:00:00");
// 使用年、月、日创建一个日期对象
var dateFromYMD = new Date(2024, 2, 5); // 月份从0开始,所以3月是2
// 使用 ISO 格式字符串创建一个日期对象
var dateFromISOString = new Date("2024-03-05T12:00:00Z");

new Date(year, month - 1, 1);
year表示年份
month-1表示月份,这里减去1是因为JavaScript中的月份是从0开始的(0表示一月,1表示二月,以此类推)
1表示日期,这里是月份的第一天
所以,这一行代码创建了一个Date对象,表示给定年份和月份的第一天。

new Date(year, month, 0);
year表示年份
month表示月份
0表示日期,但在JavaScript中,当日期为0时,它表示前一个月的最后一天
因此,这一行代码创建了一个Date对象,表示给定年份和月份的最后一天。

toLocaleString

在JavaScript中,toLocaleString是用于将数字或日期格式化为本地化字符串的方法。它可以接受一些可选的参数,以便更精确地控制输出格式。

locales(可选)
类型: 字符串或字符串数组
描述: 表示一个或多个区域设置代码,用于指定所需的语言和地区。如果传递多个区域设置,浏览器将按照列表的顺序查找最佳匹配。

var number = 123456.789;
console.log(number.toLocaleString('en-US'));
// 输出: 123,456.789 (使用美国英语格式)
console.log(number.toLocaleString('de-DE'));
// 输出: 123.456,789 (使用德国德语格式)

options(可选)
类型: 对象
描述: 一个包含以下属性的对象,用于更详细地配置格式:
style: 可以是’decimal’(默认),‘currency’,或’percent’。
currency: 当style为’currency’时,表示货币的ISO 4217代码。
minimumIntegerDigits: 整数部分的最小位数。
minimumFractionDigits: 小数部分的最小位数。
maximumFractionDigits: 小数部分的最大位数。
minimumSignificantDigits: 显著数字的最小位数。
maximumSignificantDigits: 显著数字的最大位数。

var number = 123456.789;
var options = {
  style: 'currency',
  currency: 'EUR',
  minimumFractionDigits: 2,
  maximumFractionDigits: 2
};
console.log(number.toLocaleString('de-DE', options)); 
// 输出: €123,456.79 (使用德国德语格式,货币为欧元,小数位数为两位)

dateStyle和timeStyle(可选)
类型: 字符串
描述: 用于指定日期和/或时间的样式,可以是"full"、“long”、“medium"或"short”。

var date = new Date();
var options = { dateStyle: 'full', timeStyle: 'short' };
console.log(date.toLocaleString('en-US', options));
// 输出: Saturday, March 5, 2024 at 1:30 PM (使用美国英语格式)

这些参数可以单独使用,也可以一起结合使用,以满足特定的本地化需求。根据需要选择适当的参数,并根据具体情况调整其值。

Intl

const now = new Date();
// 通过 Intl.DateTimeFormat 构造函数创建一个日期格式化对象,设置 timeZone 为 'Asia/Shanghai'(中国时区)
const formatter = new Intl.DateTimeFormat('default', {
  timeZone: 'Asia/Shanghai',
  year: 'numeric',
  month: 'numeric',
  day: 'numeric',
  hour: 'numeric',
  minute: 'numeric',
  second: 'numeric',
});
// 使用格式化对象将日期对象转换为字符串
const formattedDate = formatter.format(now);
console.log(formattedDate);

到此这篇关于JavaScript之通过年月获取月份的天数、日期格式化、时间、补零、Date、toLocaleString、Intl、DateTimeFormat、format的文章就介绍到这了,更多相关js获取月份的天数日期格式化内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 微信JSSDK上传图片

    微信JSSDK上传图片

    做过微信开发的都知道,在部分android机型里微信不支持网页上传图片的,这是由于这些机型的文件上传存在内存泄漏,会导致微信闪退,所以微信内置浏览器将文件上传屏蔽,本篇文章给大家介绍使用微信jssdk如何上传图片,需要的朋友可以关注下
    2015-08-08
  • 一文解析JavaScript模块构建的三种方式

    一文解析JavaScript模块构建的三种方式

    在现代Web开发中,JavaScript库的构建和打包是一个至关重要的环节,不同的构建方式可以影响到库的性能、可维护性和适用性,本文将深入剖析三种主要的JavaScript模块构建方式:CommonJS、ES模块和AMD,我们将深入探讨它们的工作原理、适用场景以及示例代码
    2023-08-08
  • js控制frameSet示例

    js控制frameSet示例

    修改frameset的cols属性来达到修改各个页面所占的宽高,例如隐藏当前frame页等等,感兴趣的朋友可以了解下
    2013-09-09
  • JS组件中bootstrap multiselect两大组件较量

    JS组件中bootstrap multiselect两大组件较量

    这篇文章主要介绍了JS组件中bootstrap multiselect两大组件,两者之间的较量,优缺点比较,感兴趣的小伙伴们可以参考一下
    2016-01-01
  • JS实现滑动条案例

    JS实现滑动条案例

    这篇文章主要为大家详细介绍了JS实现滑动条案例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • 基于Next.js实现在线Excel的详细代码

    基于Next.js实现在线Excel的详细代码

    Next.js是一款React 开发框架,它可以帮助我们构建 React 应用程序。作为一个轻量级React服务端渲染应用框架,这篇文章主要介绍了基于 Next.js实现在线Excel,需要的朋友可以参考下
    2022-08-08
  • JavaScript、C# URL编码、解码总结

    JavaScript、C# URL编码、解码总结

    这篇文章主要介绍了JavaScript、C# URL编码总结,注意包括了encodeURI、decodeURI、encodeURIComponent、decodeURIComponent等使用需要的朋友可以参考下
    2017-01-01
  • js fromCharCode输出26个字母的代码

    js fromCharCode输出26个字母的代码

    这个代码比较简单主要是用到了fromCharCode的特性
    2008-11-11
  • JavaScript查看数据返回值的方法

    JavaScript查看数据返回值的方法

    console.log()、alert() 都是JavaScript中用于在开发过程中输出信息或向用户显示消息的不同方法,它们的主要区别在于目的、使用场景以及展示方式,本文将给大家介绍JavaScript 中怎么看数据返回值,需要的朋友可以参考下
    2024-07-07
  • sso跨域写cookie的一段js脚本(推荐)

    sso跨域写cookie的一段js脚本(推荐)

    下面小编就为大家带来一篇sso跨域写cookie的一段js脚本(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-05-05

最新评论