日期相关的小函数汇总

在写日历组件和旅行相关频道开发的过程中,很多需要地方需要和日期对象打交道。拿京东旅游首页来说, 左上角的搜索框就包含了许多日期相关的交互逻辑,它包含了机票,酒店,度假等,这些都含有出发日期,到达日期等。

里面还包含了一个日期组件,在用户选择完出发日期后,会自动把到达日期定位在出发日期的下一天。

又如机票低价日历

还有度假的这种特殊日历

以下是经常需要用到日期相关小函数

一、 判断闰年
这个函数在日历组件是必须要的,闰年的2月是29天,非闰年是28天

/*
 * 判断闰年
 * @param  {Number} 年
 * @return {Blooean}
 */
function isLeapYear(year) {
    return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)
}
isLeapYear(2015) // false
isLeapYear(2016) // true

  

二、补齐月,日数字位数

通过Date对下的getMonth,getDate返回的数字如果是10以下的需要在前面补齐一个0。这里需要注意的是getMonth返回的月份是从0开始的,即0代表1月份,1代表2月份,依次类推。

/*
 * 补齐月,日数字位数
 * @param {number|string} n 需要补齐的数字
 * @return {string} 补齐两位后的字符
 */
function getTwoBit(n) {
    return (n > 9 ? ‘‘ : ‘0‘) + n
}
getTwoBit(3)  // ‘03‘
getTwoBit(9)  // ‘09‘
getTwoBit(10) // ‘10‘
getTwoBit(11) // ‘11‘

  

三、Date对象转成日期格式字符串

有两种格式"2015-01-22" 和 "2015/01/23"

/*
 * 日期对象转成字符串
 * @param  {Date} new Date()
 * @split  {String} "-" 或 "/"
 * @return {String} "2014-12-31"
 */
function date2Str(date, split) {
    split = split || ‘-‘
    var y = date.getFullYear()
    var m = getTwoBit(date.getMonth() + 1)
    var d = getTwoBit(date.getDate())
    return [y, m, d].join(split)
}

四、日期格式字符串转成Date对象

/*
 * 日期字符串转成Date对象
 * @param {String} str
 *   "2014-12-31"
 *   "2014/12/31"
 * @return {Date}
 */
function str2Date(str) {
    var date = null
    if (reDate.test(str)) {
        date = str.replace(/-/g, ‘/‘)
    }
    return new Date(date)
}

这里需要注意下,不能直接 new Date(‘2014-12-31‘),横线间隔的日期格式字符串作为参数传给Date构造器不是所有浏览器都支持

五、根据数字返回特定的天

比如旅行频道出发日期一般是第二天(明天),返程日期是第三天(后天)

这个函数根据数字返回特定的日期字符串

/*
 * 返回日期格式字符串
 * @param {Number} 0返回今天的日期、1返回明天的日期,2返回后天得日期,依次类推
 * @return {string} ‘2014-12-31‘
 */
function getSpecDay(i) {
    i = i || 0
    var date = new Date
    var diff = i * (1000 * 60 * 60 * 24)
    date = new Date(date.getTime() + diff)
    return date2Str(date)
}
getSpecDay(0) // 2014-12-31
getSpecDay(1) // 2015-01-01

  

六、根据Date对象获取星期

有的需求要显示的是 “周三”,有的则是 “星期三”

/*
 * 根据Date对象获取周几
 * @param date {Date|String} 如 ‘2014-12-22‘
 * @param isFormal {Boolean}
 * @return ‘周一‘ 或 ‘星期一‘
 */
function getWeekByDate(date, isFormal) {
    var obj = null
    var weekArr1 = [‘周日‘,‘周一‘,‘周二‘,‘周三‘,‘周四‘,‘周五‘,‘周六‘]
    var weekArr2 = [‘星期日‘, ‘星期一‘,‘星期二‘,‘星期三‘,‘星期四‘,‘星期五‘,‘星期六‘]
    if (typeof date == ‘string‘) {
        obj = str2Date(date)
    } else if (date instanceof Date) {
        obj = date
    }
    var num = obj.getDay()
    return isFormal ? weekArr2[num] : weekArr1[num]
}

  

时间: 2024-12-28 13:29:03

日期相关的小函数汇总的相关文章

js 日期计算星座 根据生日的月份和日期,一行代码计算星座的js小函数(转)

本博客根据 开源中国作者清风徐不来 的文章 根据生日的月份和日期,一行代码计算星座的js小函数(转) 原文出自CSDN 无心的专栏 的文章,知识产权归原文作者所有! 点击查看原文:js 日期计算星座

PHP日期、时间戳相关的小程序

1.日期区间内的日期列表(天): 1 public function dateExtent($begin,$end){ 2 $begin = strtotime($begin); 3 $end = strtotime($end); 4 while($begin<=$end){ 5 $dateArr[] = date('Y-m-d',$begin); 6 $begin += 86400; 7 } 8 return $dateArr; 9 } 注释: $begin = '2014-07-29'; $

微信小程序image组件开发程序以及相关图片问题参考资料汇总

微信小程序image组件开发程序以及相关图片问题参考资料汇总,希望对大家小程序开发能有一定的参考和借鉴价值.以下汇总主要涉及到微信小程序image组件有关资源路径.缩放和剪裁模式等进行的探讨,无论是对微信小程序新手还是正在开发中的朋友都是很好的小程序学习资料. 微信小程序image组件必备基础知识: image组件默认宽度300px.高度225px image的属性mode有13种模式,其中4种是缩放模式,9种是裁剪模式 image组件开发教程汇总: 微信小程序自定义组件实现图片单指拖动.双指缩

C++编程常用头文件及其包含函数汇总

1. #include<iostream>是标准的C++头文件,任何符合标准的C++开发环境都有这个头文件. 当使用<iostream.h>时,相当于在c中调用库函数,使用的是全局命名空间,也就是早期的c++实现:当使用<iostream>的时候,该头文件没有定义全局命名空间,必须使用namespace std:这样才能正确使用cout.   2.#include <cstdlib>是C++里面的一个常用函数库, 等价于C中的<stdlib.h>

PHP部分字符串函数汇总

PHP部分字符串函数汇总 提交 我的评论 加载中 已评论 PHP部分字符串函数汇总 2015-03-10 PHP100中文网 PHP100中文网 PHP100中文网 微信号 功能介绍 互联网开发者社区,提供相关技术信息服务,技术交流着平台 我们大家知道无论哪种语言,字符串操作都是一个重要的基础,往往是简单而重要.PHP给我们提供了大量的字符串操作函数,功能强大,使用也比较简单,这里为大家总结九类字符串函数. 1. 查找字符位置函数 strpos($str,search,[int]): 查找sea

Mysql中常用的函数汇总

Mysql中常用的函数汇总: 一.数学函数abs(x) 返回x的绝对值bin(x) 返回x的二进制(oct返回八进制,hex返回十六进制)ceiling(x) 返回大于x的最小整数值exp(x) 返回值e(自然对数的底)的x次方floor(x) 返回小于x的最大整数值greatest(x1,x2,...,xn)返回集合中最大的值least(x1,x2,...,xn) 返回集合中最小的值ln(x) 返回x的自然对数log(x,y)返回x的以y为底的对数mod(x,y) 返回x/y的模(余数)pi(

oracle常用函数汇总

一.运算符算术运算符:+ - * / 可以在select 语句中使用连接运算符:|| select deptno|| dname from dept; 比较运算符:> >= = != < <= like between is null in逻辑运算符:not and or 集合运算符: intersect ,union, union all, minus 要求:对应集合的列数和数据类型相同 查询中不能包含long 列 列的标签是第一个集合的标签 使用order by时,必须使用位置

SQL函数汇总【精选篇】

1.绝对值   SQL:select abs(-1) value  O:select abs(-1) value from dual  2.取整(大)   S:select ceiling(-1.001) value   O:select ceil(-1.001) value from dual  3.取整(小)   S:select floor(-1.001) value   O:select floor(-1.001) value from dual  4.取整(截取)  S:select

非常实用的PHP常用函数汇总

这篇文章主要介绍了非常实用的PHP常用函数,汇总了加密解密.字符串操作.文件操作.SQL注入等函数的实例与用法说明,在PHP项目开发中非常具有实用价值,需要的朋友可以参考下 本文实例总结了一些在php应用开发中常用到的函数,这些函数有字符操作,文件操作及其它的一些操作了,分享给大家供大家参考.具体如下: 1.PHP加密解密 PHP加密和解密函数可以用来加密一些有用的字符串存放在数据库里,并且通过可逆解密字符串,该函数使用了base64和MD5加密和解密. 复制代码 代码如下: function