java/javascript 时间操作工具类

一、java 时间操作工具类

import org.springframework.util.StringUtils;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;/*** 时间操作工具类** @author zwq**/
public class TimeFrameUtil {/*** 获取今天的时间范围* @return 返回长度为2的字符串集合,如:[2017-11-03 00:00:00, 2017-11-03 24:00:00]*/public static List<String> getTodayRange() {List<String> dataList = new ArrayList<>(2);SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");Calendar calendar = Calendar.getInstance();calendar.setTimeInMillis(System.currentTimeMillis());calendar.add(Calendar.DATE, 0);String today = dateFormat.format(calendar.getTime());dataList.add(today + " 00:00:00");dataList.add(today + " 24:00:00");return dataList;}/*** 获取昨天的时间范围* @return 返回长度为2的字符串集合,如:[2017-11-02 00:00:00, 2017-11-02 24:00:00]*/public static List<String> getYesterdayRange() {List<String> dataList = new ArrayList<>(2);SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");Calendar calendar = Calendar.getInstance();calendar.setTimeInMillis(System.currentTimeMillis());calendar.add(Calendar.DATE, -1);String yesterday = dateFormat.format(calendar.getTime());dataList.add(yesterday + " 00:00:00");dataList.add(yesterday + " 24:00:00");return dataList;}/*** 获取本周的时间范围* @return 返回长度为2的字符串集合,如:[2017-10-30 00:00:00, 2017-11-05 24:00:00]*/public static List<String> getCurrentWeekRange() {List<String> dataList = new ArrayList<>(2);SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");Calendar calendar = Calendar.getInstance();calendar.setFirstDayOfWeek(Calendar.MONDAY);//设置周一为一周之内的第一天
        calendar.setTimeInMillis(System.currentTimeMillis());calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);String monday = dateFormat.format(calendar.getTime()) + " 00:00:00";calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);String sunday = dateFormat.format(calendar.getTime()) + " 24:00:00";dataList.add(monday);dataList.add(sunday);return dataList;}/*** 获取本周的时间范围(不带时分秒)* @return 返回长度为2的字符串集合,如:[2017-10-30, 2017-11-05]*/public static List<String> getCurrentWeekRangeNoTime() {List<String> dataList = new ArrayList<>(2);SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");Calendar calendar = Calendar.getInstance();calendar.setFirstDayOfWeek(Calendar.MONDAY);//设置周一为一周之内的第一天
        calendar.setTimeInMillis(System.currentTimeMillis());calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);String monday = dateFormat.format(calendar.getTime());calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);String sunday = dateFormat.format(calendar.getTime());dataList.add(monday);dataList.add(sunday);return dataList;}/*** 获取本月的时间范围* @return 返回长度为2的字符串集合,如:[2017-11-01 00:00:00, 2017-11-30 24:00:00]*/public static List<String> getCurrentMonthRange() {List<String> dataList = new ArrayList<>(2);SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");Calendar calendar = Calendar.getInstance();calendar.setTimeInMillis(System.currentTimeMillis());calendar.add(Calendar.MONTH, 0);calendar.set(Calendar.DAY_OF_MONTH, 1);String firstDayOfMonth = dateFormat.format(calendar.getTime()) + " 00:00:00";calendar.add(Calendar.MONTH, 1);calendar.set(Calendar.DAY_OF_MONTH, 0);String lastDayOfMonth = dateFormat.format(calendar.getTime()) + " 24:00:00";dataList.add(firstDayOfMonth);dataList.add(lastDayOfMonth);return dataList;}/*** 获取本年的时间范围* @return 返回长度为2的字符串集合,如:[2017-01-01 00:00:00, 2017-12-31 24:00:00]*/public static List<String> getCurrentYearRange() {List<String> dataList = new ArrayList<>(2);SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");Calendar calendar = Calendar.getInstance();calendar.setTimeInMillis(System.currentTimeMillis());calendar.add(Calendar.YEAR, 0);calendar.set(Calendar.DAY_OF_YEAR, 1);String firstDayOfYear = dateFormat.format(calendar.getTime()) + " 00:00:00";calendar.add(Calendar.YEAR, 1);calendar.set(Calendar.DAY_OF_YEAR, 0);String lastDayOfYear = dateFormat.format(calendar.getTime()) + " 24:00:00";dataList.add(firstDayOfYear);dataList.add(lastDayOfYear);return dataList;}/*** 获取最近几天的时间范围* @param lastFewDays 最近多少天* @return 返回长度为2的字符串集合,如:[2017-12-25 17:15:33, 2017-12-26 17:15:33]*/public static List<String> getLastFewDaysRange(int lastFewDays) {List<String> dataList = new ArrayList<>(2);SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Calendar calendar = Calendar.getInstance();calendar.setTimeInMillis(System.currentTimeMillis());String endTime = dateFormat.format(calendar.getTime());calendar.add(Calendar.DATE, -lastFewDays);String startTime = dateFormat.format(calendar.getTime());dataList.add(startTime);dataList.add(endTime);return dataList;}/*** 获取当前时间* @param pattern 指定返回当前时间的格式,例:"yyyy-MM-dd HH:mm:ss"* @return 返回指定格式的当前时间,如:"2018-01-25 10:14:30"*/public static String getCurrentTime(String pattern) {String currentTime;SimpleDateFormat dateFormat = new SimpleDateFormat(pattern);Calendar calendar = Calendar.getInstance();calendar.setTimeInMillis(System.currentTimeMillis());currentTime = dateFormat.format(calendar.getTime());return currentTime;}/**** 将指定时间偏移几小时* @param time 指定时间,精确到分,例:"2018-01-25 10:48"* @param offset 偏移量:负数代表减几个小时,正数代表加几个小时,例:1* @return 返回偏移后的时间,如:"2018-01-25 11:48"* @throws ParseException*/public static String offsetHours(String time, int offset) throws ParseException {String offsetHours = null;if (StringUtils.hasText(time)) {SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");Calendar calendar = Calendar.getInstance();calendar.setTime(dateFormat.parse(time));calendar.add(Calendar.MINUTE, offset);offsetHours = dateFormat.format(calendar.getTime());}return offsetHours;}/*** 将指定月份偏移几个月* @param month 指定月份* @param offset 偏移量:负数代表上几个月,正数代表下几个月* @return 返回偏移后的月份,如:2018-01* @throws ParseException*/public static String offsetMonths(String month, int offset) throws ParseException {String offsetMonth = null;if (StringUtils.hasText(month)) {SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM");Calendar calendar = Calendar.getInstance();calendar.setTime(dateFormat.parse(month));calendar.add(Calendar.MONTH, offset);offsetMonth = dateFormat.format(calendar.getTime());}return offsetMonth;}/*** 获取指定日期是星期几(设置星期一为一周的开始)* @param day 指定日期* @return 返回星期几,如:1* @throws ParseException*/public static int getDayOfWeek(String day) throws ParseException {int dayOfWeek = 0;if (StringUtils.hasText(day)) {SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");Calendar calendar = Calendar.getInstance();calendar.setTime(dateFormat.parse(day));calendar.add(Calendar.DATE, -1); //在指定日期的基础上减一天,满足中国人的习惯dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);}return dayOfWeek;}/*** 获取指定月份有多少天* @param month 指定月份* @return 返回天数,如:31* @throws ParseException*/public static int getDaysInMonth(String month) throws ParseException {SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM");Calendar calendar = Calendar.getInstance();calendar.setTime(dateFormat.parse(month));calendar.add(Calendar.MONTH, 1);calendar.set(Calendar.DAY_OF_MONTH, 0);return calendar.get(Calendar.DAY_OF_MONTH);}}

二、javascript 时间操作工具类

/*** 时间操作工具类** @author zwq**/
var TimeFrameUtil = {/*** 格式化日期* @param date {Date} 日期* @param pattern {string} 格式,例:"yyyy-MM-dd HH:mm:ss"* @returns {String} 返回格式化后的日期,如:"2018-01-22 18:04:30"*/format : function (date, pattern) {var time = {"M+": date.getMonth() + 1,"d+": date.getDate(),"H+": date.getHours(),"m+": date.getMinutes(),"s+": date.getSeconds(),"q+": Math.floor((date.getMonth() + 3) / 3),"S+": date.getMilliseconds()};if (/(y+)/i.test(pattern)) {pattern = pattern.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));}for (var k in time) {if (new RegExp("(" + k + ")").test(pattern)) {pattern = pattern.replace(RegExp.$1, RegExp.$1.length == 1 ? time[k] : ("00" + time[k]).substr(("" + time[k]).length));}}return pattern;},/*** 将指定时间偏移几小时* @param time {String} 指定时间,例:"2018-01-24 17:00"* @param offset {Number} 偏移量,正数代表加几小时,负数代表减几小时,例:1* @param pattern {String} 返回时间的格式,例:"yyyy-MM-dd HH:mm"* @returns {String} 返回计算后的时间,如:"2018-01-24 18:00"*/offsetHours : function (time, offset, pattern) {var date = new Date(Date.parse(time));var yyyy = date.getFullYear();var MM = date.getMonth();var dd = date.getDate();var HH = date.getHours() + offset;var mm = date.getMinutes();var ss = date.getSeconds();return this.format(new Date(yyyy, MM, dd, HH, mm, ss), pattern);},/*** 将指定月份偏移几个月* @param month {String} 指定月份,例:"2018-01"* @param offset {Number} 偏移量,负数代表上几个月,正数代表下几个月,例:1* @returns {String} 返回计算后的月份,如:"2018-02"*/offsetMonths : function (month, offset) {var date = new Date(Date.parse(month));var year = date.getFullYear();var month = date.getMonth();var preOrNextMonth = month + offset;return this.format(new Date(year, preOrNextMonth), "yyyy-MM");},/*** 获取指定日期是星期几* @param date {String} 指定日期,例:"2018-01-23"* @returns {Number} 返回星期几(1-7),如:2*/dayOfWeek : function (date) {var time = new Date(Date.parse(date));var weekday=new Array(7);weekday[0]= 7;weekday[1]= 1;weekday[2]= 2;weekday[3]= 3;weekday[4]= 4;weekday[5]= 5;weekday[6]= 6;return weekday[time.getDay()];},/*** 获取指定月份有多少天* @param month {String} 指定月份:例"2018-01"* @returns {number} 返回指定月份有多少天,如:31*/daysInMonth : function (month) {var date = new Date(Date.parse(month));var year = date.getFullYear();var month = date.getMonth();if (month == 1) {if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)return 29;elsereturn 28;} else if ((month <= 6 && month % 2 == 0) || (month > 6 && month % 2 == 1))return 31;elsereturn 30;}
};

 

转载于:https://www.cnblogs.com/zhuwenqi2016/p/7779648.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/540380.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[转载] java语言程序设计-基础篇

参考链接&#xff1a; Java中的决策制定(if&#xff0c;if-else&#xff0c;switch&#xff0c;break&#xff0c;continue&#xff0c;jump) 第1章&#xff0c;计算机、程序和Java概述 包括【每个java初学者都应该搞懂的问题】 http://blog.csdn.net/haobo920/article/detai…

Exchange server 2013(十四)WSUS部署及组策略设置(2)

我们继续上一节未完的博客&#xff0c;继续我们的WSUS设置。[上一章节标题&#xff1a;Exchange server 2013(十四)WSUS部署及组策略设置(1) 网址&#xff1a;http://1183839.blog.51cto.com/blog/1173839/1182366] 首先单击自动审批,来修改审批规则,也就是说当wsus侦测到新的更…

[转载] Python中的switch语句的替代品

参考链接&#xff1a; Java中的switch语句 Python 中没有 switch语句。 一般用if-else 语句可以替代switch语句&#xff0c;今天学习了使用字典的映射来代替switch语句。Mark一下 day 8; def get_sunday(): return sunday def get_monday(): return monday def get_tues…

“□” 表情无法在 Android 设备显示? 快试试 EmojiCompact 表情兼容库

有了支持库 v26 下的 Compact 库&#xff0c;基于 API 19 及更高版本开发的应用就能获得 emoji 的向下兼容&#xff0c;再也不会看到显示失败的 “豆腐块” 啦。如要使用 EmojiCompact&#xff0c;需要在应用启动时通过下载或者打包字体来初始化库。通过集成小插件&#xff0c;…

[转载] jstl获取Parameter参数及switch使用

参考链接&#xff1a; Java中的字符串使用switch <% taglib uri"/WEB-INF/tld/c.tld" prefix"c" %> param 获取 Parameter参数 <c:choose> <c:when test"${empty param.name}"> Please enter your name. …

syslinux 制作多系统启动U盘

syslinux 制作多系统启动U盘标签&#xff1a;u盘使用 syslinux 制作多系统启动U盘 syslinux 能加载虚拟内存盘&#xff0c;能引导各种镜像文件&#xff0c;适合用于制作多系统启动U盘&#xff0c; 但是我按照网上说的步骤&#xff0c;总是不能制作成功&#xff1a; 1. 格式化…

[转载] JAVA基础----java中E,T,?的区别?

batch_size 1 layout "NHWC" target tvm.target.Target("cuda") dtype "float32" log_file "%s-%s-B%d.json" % (network, layout, batch_size)

用MATLAB结合四种方法搜寻罗马尼亚度假问题

选修了cs的AI课&#xff0c;开始有点不适应&#xff0c;只能用matlab硬着头皮上了&#xff0c;不过matlab代码全网仅此一份&#xff0c;倒有点小自豪。 一、练习题目 分别用宽度优先、深度优先、贪婪算法和 A*算法求解“罗马利亚度假问题”。具体地图我这里不给出了&#xff0c…

[转载] Java中文与ASCII码的转换

参考链接&#xff1a; 扩展Java中的原始转换 今天在研究Java中编码的时候&#xff0c;看到了Java中ascii码的强大。写了一个CoderUtils.java&#xff0c;以后会扩展它。 package com.xingxd.study.test; import java.io.File; import java.io.FileWriter; import java.io.I…

[转]Paul Adams:为社交设计

为社交设计 Strong, Weak, and Temporary Ties by Paul Adams on 2010/04/09 PS&#xff1a;作者Paul Adams Facebook全球品牌体验总监 电话和手机聚集十亿用户用了15年的时间&#xff0c;而Facebook只用了9个月。我们看到越来越多的人开始用在线社交网络&#xff0c;这种网络好…

[转载] Java中日期格式转换

参考链接&#xff1a; Java中的类型转换和示例 Code: /** * 字符串转换为java.util.Date<br> * 支持格式为 yyyy.MM.dd G at hh:mm:ss z 如 2002-1-1 AD at 22:10:59 PSD<br> * yy/MM/dd HH:mm:ss 如 2002/1/1 17:55:00<br> * yy/MM/dd HH:…

Android Framework中的Application Framework层介绍

Android的四层架构相比大家都很清楚&#xff0c;老生常谈的说一下分别为&#xff1a; Linux2.6内核层&#xff0c;核心库层&#xff0c;应用框架层&#xff0c;应用层。我今天重点介绍一下应用框架层Framework。 Framework层为我们开发应用程序提供了非常多的API&#xff0c;我…

[转载] java注释

参考链接&#xff1a; Java注释 Java注释 java中注释有三种&#xff1a;这些都称之为java doc标记&#xff0c;含义如下&#xff1a; java中注释有三种&#xff1a; 单行注释 //注释的内容&#xff0c;多行注释 /…注释的内容…/&#xff0c;文档注释 /**…注释的内容….*/。…

环路是怎样形成的实例

环路是怎样形成的一个由十多台交换机组成的小型局域网&#xff0c;交换机大多是Cisco的中低端系列产品。某日突然出现问题&#xff1a;局域网内的主机之间相互ping时&#xff0c;都出现延时长、丢包现象&#xff0c;网络应用奇慢无比。 观察交换机设备&#xff0c;指示灯看不出…

[转载] 《Python语言程序设计》课程笔记

参考链接&#xff1a; Python程式设计语言 文章目录 第一部分 Python快速入门第1周 Python基本语法元素第2周 Python基本图形绘制 第二部分 Python基础语法第3周 基本数据类型3.1 数字类型及操作3.3 字符串类型及操作3.4 模块2: time库的使用 第4周 程序的控制结构4.1 程序的分…

ORACLE中创建如何创建表,并设置结构和默认值

使用select语句查看EMP表&#xff0c;根据COMM排序 默认情况下&#xff0c;空值会自动排列在尾部。 利用nulls last排序时将空值置底 利用nulls first排序时将空值置顶 例 创建一张出版社表 使用语句 create table 表名&#xff08;列名1 类型&#xff0c;列名2 类型&#xff0…

[转载] C++灵魂所在之---多态的前世与今生

参考链接&#xff1a; Java是否支持goto 开头先送大家一句话吧&#xff1a; 众所周知&#xff0c;在20世纪80年代早期&#xff0c;C在贝尔实验室诞生了&#xff0c;这是一门面向对象的语言&#xff0c;但它又不是全新的面向对象的语言&#xff0c;它是在传统的语言…

Code Sinppet

如果你在使用VS 2005,如果你不能使用它的Code Snippet功能&#xff0c;如果你在实现抽象类override 方法时弹出&#xff1a;Code Snippet titled [Method Stub - Body] failed to load. Verify that refactoring snippets are recognized in the Code Snippet Manager and that…

暴风TV请来中国人工智能first lady冯雁教授任首席科学家

今日下午&#xff0c;暴风AI无屏电视发布会现场&#xff0c;暴风TV宣布邀请号称“中国人工智能first lady”、于香港科技大学任教的冯雁教授&#xff0c;担任暴风TV人工智能首席科学顾问。 冯雁教授于现场表示&#xff0c;选择暴风TV合作的重要原因&#xff0c;一方面在于其个人…

[转载] java 计算协方差_Java的深度:通过协方差暴露的API泄漏

参考链接&#xff1a; 关于Java中null的有趣事实 java 计算协方差 Java有时可能非常棘手&#xff0c;特别是在API设计中。 让我们看一个非常有趣的展示柜。 jOOQ强烈地将API与实现分开。 所有API都在org.jooq包中&#xff0c;并且是公共的。 大多数实现是在org.jooq.impl包…