js日期操作之根据指定格式获取日期
来源:互联网 发布:5年了日本核辐射知乎 编辑:程序博客网 时间:2024/06/05 11:17
今天在写前台页面的时候需要获取到指定格式的日期字符串。例如:"2017-4-3 18:00:00 Monday"。我们知道,js跟java类似,他本身包含了Date对象,查了js中Date的API后发现,其有toLocaleDateString(),toLocaleTimeString()和toLocaleString()三个直接可以获取的方法,但遗憾的是这三个方法返回的是默认格式的日期字符串:分别为"2017/4/3" , "下午6:00:00" "2017/4/3 下午6:00:00",无法自定义设置。如果输出日期对格式没有要求的话,用这三个方法是非常方便的!但是如果我想获取到“2017年4月3日 18点00分00秒 星期一”或者任意自己想要的格式,那该如何获取呢?(以下以获取"2017-4-3 18:00:00 Monday"格式为例,讲诉我自己的解决方案)
我们想要得到指定格式的日期字符串是属于Date对象的功能,所以根据面向对象的思维,我们给js的Date对象添加一个原型方法Format(如果对js中原型的概念不太清楚的话,可查阅相关资料。总而言之,给一个类加上了原型方法,那么这个类的所有对象就都具备该方法了)。也许是受java的影响,我选择了将格式模板以字符串的形式传给Format方法,此模板字符串跟java中类似,年月日时分秒都必须是固定的写法,原因见后面代码。即以如下方式获得我们想要的日期格式:
String resDateString = new Date().Format("yyyy-MM-dd HH:mm:ss ww");
由Format方法来处理得到指定的日期字符串,处理的基本思想是:将模板字符串format中的各部分用js中Date提供的方法来替换,具体如下:
Date.prototype.Format = function(format){
//替换 year yyyy
format = format.replace("yyyy",this.getFullYear().toString());
//替换 month MM this.getMonth()返回0-11
format = format.replace("MM",(this.getMonth()+1).toString());
//替换 day dd
format = format.replace("dd",this.getDate().toString());
//替换 hour HH
format = format.replace("HH",this.getHours().toString());
//替换 minutes mm
format = format.replace("mm",this.getMinutes().toString());
//替换 seconds ss
format = format.replace("ss",this.getSeconds().toString());
//替换 weekdays ww this.getDay()返回的是0-6
format = format.replace("ww",this.getWeekday(this.getDay()));
return format;
};
以获取星期几为例(其他类似),Date提供的getDay方法返回的是0-6的数字,分别对应Sunday-Saturday,如果我们需要输出我们自己想要的格式,那必须重新对其赋值,如下:
Date.prototype.getWeekday = function (weekdayNum){
var weekdayName = null;
switch(weekdayNum){
case 0:weekdayName = "Sunday";break;
case 1:weekdayName = "Monday";break;
case 2:weekdayName = "Tuesday";break;
case 3:weekdayName = "Wednesday";break;
case 4:weekdayName = "Thursday";break;
case 5:weekdayName = "Friday";break;
case 6:weekdayName = "Saturday";break;
default:weekdayName = "weekday change error!";
}
return weekdayName;
};
至此,已实现了对指定格式日期字符串的获取。
说明:不一定非要把Format方法和getWeekday方法加在Date的原型上,可以自己编写一个function,将Date对象和字符串模板都穿进去处理,效果是一样的,但个人不推荐那样做,原因此处略!
- js日期操作之根据指定格式获取日期
- 根据指定格式获取当前日期
- 根据指定 日期格式 生成 指定格式的指定日期
- js根据当前时间获取指定范围内的时间段日期
- js 日期格式操作
- 获取农历日期,指定日期格式
- 根据当前日期(指定日期),获取下周日期
- 根据指定的格式验证日期时间
- js中获取日期格式
- js获取日期:指定日期前后的日期
- 根据日期时间格式获取系统日期时间
- 【转载】js获取当前日期,格式化成xxxx-xx-xx的格式(根据情况补零)
- 使用sqlserver日期函数获取当前日期(指定格式)
- Java各种日期格式的获取和设置指定日期
- JS 之 验证日期格式
- JS获取日期时间操作
- js根据选择日期获取对应时间
- js根据时间戳获取格式化日期
- 贝塞尔曲线(一) 认识
- fork()函数详解
- 用数组来处理求Fibonacci数列问题
- java properties解析
- Linux系统编程3.时间概念
- js日期操作之根据指定格式获取日期
- DOM 编程艺术 实用代码段
- 谈谈我对京东的认识(4):电商只有综合型电商,没有垂直电商
- 使用Java实现面向对象编程--集合框架
- 蓝桥杯算法提高——上帝造题五分钟(线段树+区间最小值)
- hdu 1506(nyoj 258)Largest Rectangle in a Histogram(最大长方形(二))(单调栈)
- NSSetUncaughtExceptionHandler处理异常
- Tomcat 报错:Failed to start Compenent
- Linux下高并发socket最大连接数所受的各种限制