一、Java日期工具类?
Java日期工具类:可以进行日期转化、今天日期、昨天日期、明天日期、指定日期,非常实用。
想必程序员在开发过程中,遇到日期转化肯定避免不了的。它让人爱恨不已,而有些又记不住,每次遇到都得问度娘。我最近在开发过程中亦是如此。
为了让自己更好的记忆,方便以后遇到日期类型转化相关开发。因此,自己作了适当的整理,编写了一个Java日期工具类,包括获得今天日期、昨天日期、明天日期、日期和字符串之间转化等相关转化。希望这个日期工具类,也能提高你对日期转化的开发效率。
日期工具类:DateTools.java
package com.geshanzsq;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
/**
* 日期工具类
* @author 格姗知识圈
*/
public class DateTools {
/**
* 日期转化为指定日期格式类型
* @param date 日期
* @param pattern 日期格式类型,如yyyy-MM-dd,yyyy年MM月dd日 HH:mm:ss
* @return
*/
public static String dateToString(Date date,String pattern){
SimpleDateFormat sdf = new SimpleDateFormat(pattern);//日期格式
String date_str = sdf.format(date);//日期转化为指定格式
return date_str;
}
/**
* 日期字符串转化为指定日期格式类型
* @param date_str 日期字符串
* @param pattern 日期格式类型,如yyyy-MM-dd,yyyy年MM月dd日 HH:mm:ss
* @return
* @throws ParseException
*/
public static Date stringToDate(String date_str,String pattern) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat(pattern);//日期格式
Date date = sdf.parse(date_str);//日期转化为指定格式
return date;
}
/**
* 获得今天日期
* @param pattern 日期格式类型,如yyyy-MM-dd,yyyy年MM月dd日 HH:mm:ss
* @return
*/
public static String getToday(String pattern){
Date date = new Date();//今天日期
SimpleDateFormat sdf = new SimpleDateFormat(pattern);//日期格式
String today = sdf.format(date);//日期转化为指定格式
return today;
}
/**
* 获得明天日期
* @param pattern 日期格式类型,如yyyy-MM-dd,yyyy年MM月dd日 HH:mm:ss
* @return
*/
public static String getTomorrow(String pattern){
Date date = new Date();//今天日期
Calendar cal = new GregorianCalendar();
cal.setTime(date);//设置时间
cal.add(Calendar.DATE,1);//把日期往后增加一天.整数往后推,负数往前移动
date = cal.getTime();//这个时间就是日期往后推一天的日期结果,即明天日期
SimpleDateFormat sdf = new SimpleDateFormat(pattern);//日期格式
String tommorrow = sdf.format(date);//明天日期
return tommorrow;
}
/**
* 获得昨天日期
* @param pattern 日期格式类型,如yyyy-MM-dd,yyyy年MM月dd日 HH:mm:ss
* @return
*/
public static String getYesterday(String pattern){
Date date = new Date();//今天日期
Calendar cal = new GregorianCalendar();
cal.setTime(date);//设置时间
cal.add(Calendar.DATE,-1);//把日期往后增加一天.整数往后推,负数往前移动
date = cal.getTime();//这个时间就是日期往前推一天的日期结果,即昨天日期
SimpleDateFormat sdf = new SimpleDateFormat(pattern);//日期格式
String yesterday = sdf.format(date);//昨天日期
return yesterday;
}
/**
* 获得指定日期的后一天
* @param date 指定日期
* @param pattern 日期格式类型,如yyyy-MM-dd,yyyy年MM月dd日 HH:mm:ss
* @return
* @throws ParseException
*/
public static Date getAfterDay(Date date,String pattern) throws ParseException {
Calendar cal = new GregorianCalendar();
cal.setTime(date);//设置时间
cal.add(Calendar.DATE,1);//把日期往后增加一天.整数往后推,负数往前移动
date = cal.getTime();//这个时间就是日期往后推一天的日期结果,即后一天日期
SimpleDateFormat sdf = new SimpleDateFormat(pattern);//日期格式
String next_date_str = sdf.format(date);//后一天日期
//将日期字符串转化为指定日期格式类型
Date after_date = stringToDate(next_date_str,pattern);
return after_date;
}
/**
* 获得指定日期的后一天
* @param date_str 指定日期字符串
* @param pattern 日期格式类型,如yyyy-MM-dd,yyyy年MM月dd日 HH:mm:ss
* @return
* @throws ParseException
*/
public static String getAfterDay(String date_str,String pattern) throws ParseException {
//将日期字符串转化为指定日期格式类型
Date date = stringToDate(date_str,pattern);
Calendar cal = new GregorianCalendar();
cal.setTime(date);//设置时间
cal.add(Calendar.DATE,1);//把日期往后增加一天.整数往后推,负数往前移动
date = cal.getTime();//这个时间就是日期往后推一天的日期结果,即后一天日期
SimpleDateFormat sdf = new SimpleDateFormat(pattern);//日期格式
String after_date_str = sdf.format(date);//后一天日期
return after_date_str;
}
/**
* 获得指定日期的前一天
* @param date 指定日期
* @param pattern 日期格式类型,如yyyy-MM-dd,yyyy年MM月dd日 HH:mm:ss
* @return
* @throws ParseException
*/
public static Date getBeforetDay(Date date,String pattern) throws ParseException {
Calendar cal = new GregorianCalendar();
cal.setTime(date);//设置时间
cal.add(Calendar.DATE,-1);//把日期往后增加一天.整数往后推,负数往前移动
date = cal.getTime();//这个时间就是日期往后推一天的日期结果,即前一天日期
SimpleDateFormat sdf = new SimpleDateFormat(pattern);//日期格式
String before_date_str = sdf.format(date);//前一天日期
//将日期字符串转化为指定日期格式类型
Date before_date = stringToDate(before_date_str,pattern);
return before_date;
}
/**
* 获得指定日期的前一天
* @param date_str 指定日期字符串
* @param pattern 日期格式类型,如yyyy-MM-dd,yyyy年MM月dd日 HH:mm:ss
* @return
* @throws ParseException
*/
public static String getBreforeDay(String date_str,String pattern) throws ParseException {
//将日期字符串转化为指定日期格式类型
Date date = stringToDate(date_str,pattern);
Calendar cal = new GregorianCalendar();
cal.setTime(date);//设置时间
cal.add(Calendar.DATE,-1);//把日期往后增加一天.整数往后推,负数往前移动
date = cal.getTime();//这个时间就是日期往后推一天的日期结果,即前一天日期
SimpleDateFormat sdf = new SimpleDateFormat(pattern);//日期格式
String before_date_str = sdf.format(date);//前一天日期
return before_date_str;
}
}
测试类:Test.java
package com.hrg;
import java.text.ParseException;
/**
* 测试类
* @author 格姗知识圈
*/
public class Test {
public static void main(String[] args) throws ParseException {
//日期格式类型
String pattern = "yyyy-MM-dd";
//获得今天日期
System.out.println("---------获得今天日期---------");
String today = DateTools.getToday(pattern);
System.out.println("今天日期:"+today);
//获得明天日期
System.out.println("---------获得明天日期---------");
String tomorrow = DateTools.getTomorrow(pattern);
System.out.println("明天日期:"+tomorrow);
//获得昨天日期
System.out.println("---------获得昨天日期---------");
String yesterday = DateTools.getYesterday(pattern);
System.out.println("昨天日期:"+yesterday);
//获得指定日期的后一天
System.out.println("---------获得指定日期的后一天---------");
String date_str = "2018-10-03";
System.out.println("指定日期:"+date_str);
String after_date = DateTools.getAfterDay(date_str,pattern);
System.out.println("指定日期的后一天:"+after_date);
//获得指定日期的后一天
System.out.println("---------获得指定日期的前一天---------");
System.out.println("指定日期:"+date_str);
String before_date = DateTools.getBreforeDay(date_str,pattern);
System.out.println("指定日期的前一天:"+before_date);
}
}
运行结果:
---------获得今天日期---------
今天日期:2018-11-20
---------获得明天日期---------
明天日期:2018-11-21
---------获得昨天日期---------
昨天日期:2018-11-19
---------获得指定日期的后一天---------
指定日期:2018-10-03
指定日期的后一天:2018-10-04
---------获得指定日期的前一天---------
指定日期:2018-10-03
指定日期的前一天:2018-10-02
你看完之后,相信对日期转化有了更好的了解。当然,代码里面有部分是冗余的,主要是为了方便让大家清晰看懂。你看懂理解后,可以根据业务需要进行适当的修改。
二、java什么叫工具类?
我觉得这个问题好像一句话就能概括,Java工具类就是可以实现某个特定功能的类。
当然这个类必须具有一个特点,就是可重用性。如果一段代码仅仅在程序中使用一次,那么抽取出来的意义就不大。只有当某段代码需要在多个地方使用时,就可以考虑对这段代码进行抽取。
Java中的工具类大概分两种:已有的和自己编写的。由于Java已经存在了十几年,且一直很火。除了JDK自带的一些工具类外,现在还有不少由别的企业或组织写的工具类。比如:Apache的各种XXUtils, Hutool的各种utils等。如果有现成的工具类,我们还是直接引用就好。但是,有时候网上的工具类并无法满足我们的业务需求,这时候就需要自己编写。
三、java客户端怎么连mysql数据库?
最简单的方式就是JDBC,下载一个mysql-connector-java jar包,然后直接导入项目就可连接MySQL数据库,下面我简单介绍一下实现过程,感兴趣的朋友可以尝试一下:
1.首先,下载mysql-connector-java jar包(驱动),这个直接到MySQL官网上下载就行,如下,注意和自己MySQL版本相匹配:
2.下载完成后是一个zip压缩包,解压后需要将mysql-connector-java-xxx.jar包导入到项目中,这里以IDEA为例,直接在Project Structure窗口Export导入就行,如下:
3.接着我们就可以直接编写Java代码来连接MySQL数据库了,基本思想先加载JDBC驱动,然后传入用户名和密码,验证成功后,就可以连接MySQL数据库了,测试代码如下,非常简单,注意MySQL 8.0以上版本驱动名称变为com.mysql.cj.jdbc.Driver,在URL中需要添加serverTimezone=UTC:
4.最后新建一个测试类,添加一个main方法,创建SqlConnection对象,然后调用TheSqlConnection方法,如果正常连接,则会输出MySQL数据库连接成功:
至此,我们就完成了Java连接MySQL数据库。总的来说,整个过程非常简单,只要你有一定的Java基础,熟悉一下上面的操作过程,很快就能掌握的,其他数据库类似,都是先加载JDBC驱动,然后才能正常连接,网上也有相关教程和资料,介绍的非常详细,感兴趣的话,可以搜一下,希望以上分享的内容能对你有所帮助吧,也欢迎大家评论、留言进行补充。
四、mysql数据库备份工具哪个好用?
MySQL数据库备份工具中,常用的有mysqldump、MySQL Enterprise Backup、Xtrabackup等。其中,mysqldump是MySQL官方提供的备份工具,易于使用且功能完备,适合中小型企业。
MySQL Enterprise Backup适合大型企业,具有
五、Java如何实现对Mysql数据库的行锁?
在讲锁之前,首先讲讲两个概念吧 ,嘿嘿 行锁和MySQL 事务属性
行锁
mysql实现行级锁的两大前提就是,innodb引擎并且开启事务。由于MySQL/InnoDB的加锁分析,一般日常中使用方式为: select .... from table where ..... for update 语句并且在 Repeatable Read 事务隔离级别下。
行锁的劣势:开销大;加锁慢;会出现死锁
行锁的优势:锁的粒度小,发生锁冲突的概率低;处理并发的能力强
加锁的方式:自动加锁。对于UPDATE、DELETE和INSERT语句,InnoDB会自动给涉及数据集加排他锁;对于普通SELECT语句,InnoDB不会加任何锁;当然我们也可以显示的加锁:
共享锁:select * from table where “条件” + lock in share more
排他锁:select * from table where ”条件“ + for update
MySQL 事务属性
事务是由一组SQL语句组成的逻辑处理单元,事务具有ACID属性。
原子性(Atomicity):事务是一个原子操作单元。在当时原子是不可分割的最小元素,其对数据的修改,要么全部成功,要么全部都不成功。
一致性(Consistent):事务开始到结束的时间段内,数据都必须保持一致状态。
隔离性(Isolation):数据库系统提供一定的隔离机制,保证事务在不受外部并发操作影响的”独立”环境执行。
持久性(Durable):事务完成后,它对于数据的修改是永久性的,即使出现系统故障也能够保持。
举例说明
innodb引擎中行级锁分为以下三种锁
1.Record Lock
单个行记录上的锁
2.Gap Lock
间隙锁,锁定一个范围,不包括记录本身
3.Next-Key Lock
锁定一个范围和记录本身
话不多说直接代码开干
代码:select * from table where order_no= '20200521xxx' for update;
order_no是主键的时候,可以确定唯一一条数据, 所以在此加上Record Lock(即为单个记录上锁)
order_no是普通索引的时候,innodb层面 会根据条件锁定一个范围,在查询的时候聚簇索引上加Record Lock(即为单个记录上锁)
order_no不是索引的时候,本条sql会进行全表扫描,会在所有的聚簇索引上加锁,相当于全表锁,这个是在mysql innodb引擎层面决定。
还有一种情况,假如后面跟多个情况
代码:select * from table where order_no= '20200521' and code='xxx' for update;
经过上面分析
order_no主键,code不是索引,查询都只有一条数据,加Record Lock
order_no 普通索引,code不是索引 ,会先扫描order_no= '20200521',范围下加锁
结论:我们的for update 并不时都锁一条记录,也并不是只有一个锁,但是也包含我们常用的手段了,在项目中可以实践用用哦
好了,如果对您有帮助,记得关注收藏转发哦,我会一直在这里等候与您交流
六、java连接mysql数据库时出现错误:要求com.mysql.jdbc.connection?
当前数据库连接工具类没有问题,你现在需要通过如下步骤进行排查找出原因:
第一,ping数据库所在的地址IP,如果是本机可以ping127.0.0.1。这是为了确认网络无故障,很多人都忽略了防火墙等等的问题导致数据库无法正常访问。
第二,使用MySql可视化工具连接数据库并且试图查询数据,看看是否可以正常访问数据库并且获取数据,该步骤为了确认数据库服务以及数据库是否成功开启。
第三,检查是否引入了驱动包,你引入的驱动类没有问题不代表程序就可以根据你的引入找到所对应的资源,资源来自于MySql驱动jar包。
第四,数据库连接字符串后面的转码等等东西去掉然后连接试试 。
七、java.utli有哪些工具类?
纠正一下,是java.util不是java.utli。java.util 中包含集合框架、遗留的 collection 类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组、日期Date类、堆栈Stack类、向量Vector类等)。集合类、时间处理模式、日期时间工具等各类常用工具包。 你可以参照java.util 。
八、Java与MySQL数据库备份工具及操作指南
Java与MySQL数据库备份工具及操作指南
在软件开发和数据管理中,数据库备份是非常重要的一环。本文将介绍如何利用Java编写数据库备份工具,结合MySQL数据库,为您提供详细的操作指南和技术实现。
Java作为一种广泛使用的编程语言,具有良好的跨平台特性和丰富的类库支持,可以用来编写数据库备份工具,并通过MySQL数据库管理系统来存储备份数据。
在本文中,将首先介绍Java中数据库备份的相关知识,然后详细讲解如何通过编程实现对MySQL数据库的备份操作。同时,我们还会分享一些备份的最佳实践和注意事项,帮助您确保备份数据的完整性和安全性。
接下来,我们将重点介绍如何使用Java编写一个高效、稳定的数据库备份工具,包括备份任务的调度、备份文件的生成与存储等方面。我们还会提供详细的代码示例和操作步骤,让您可以快速上手并将其应用到实际项目中。
最后,我们将总结本文的主要内容,并展望未来数据库备份工具的发展方向,希望能够为您在数据库备份方面提供一些启发和帮助。
感谢您阅读本文,通过本文可以更深入地理解如何利用Java编写数据库备份工具,掌握对MySQL数据库进行高效备份的方法和技巧。
九、Java代码中jdbc连接mysql数据库的基本步骤?
1、首先导入mysql的jar包,有了jar包之后才能做之后的事情。导入方法是新建一个lib文件夹,之后把mysql的jar包放在里边,之后右击选择build path选择add to build path就会出现如下效果。
2、第一步,注册数据库驱动,注册代码如下,注意驱动的名称不能写错,是固定的。
3、获取数据库的连接。实现代码是,注意的是三个参数,第一个是URL系统路径,第二个和第三个是系统账户和密码 我的是1234 没设置的默认是空的。
4、预编译sql的语句,查询和修改的不一样,这里以查询的为例。
5、执行sql语句,即处理mysql语句。
6、处理结果集,就是处理数据。
十、java连接mysql数据库,可以用navicat吗,本地还需要装mysql数据库吗?
可以用navicat,本地也不需要安装mysql。它是一个可视化的操作数据库的客户端,减化了命令行操作。
- 相关评论
- 我要评论
-