前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Java日期计算常用方法《详细版》

Java日期计算常用方法《详细版》

作者头像
猫头虎
发布于 2024-04-07 07:12:31
发布于 2024-04-07 07:12:31
27800
代码可运行
举报
运行总次数:0
代码可运行

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文并茂🦖生动形象🐅简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍专栏》 🐾 学会IDEA常用操作,工作效率翻倍~💐 🌊 《100天精通Golang(基础入门篇)》 🐅 学会Golang语言,畅玩云原生,走遍大小厂~

🪁🍁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬请批评指正!🐅🐾🍁🐥

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Java日期计算常用方法《详细版》

前言

日期计算方法总结


提示:以下是本篇文章正文内容

0.Java中Calendar类的常用方法(对时间进行计算的类)

例子:

/****

  • 传入具体日期 ,返回具体日期增加一个月。
  • @param date 日期(2021-03-31)
  • @return 2021-03-31
  • @throws ParseException */ private String subMonth(String date) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd”); Date dt = sdf.parse(date); Calendar rightNow = Calendar.getInstance(); rightNow.setTime(dt); rightNow.add(Calendar.MONTH, 1); Date dt1 = rightNow.getTime(); String reStr = sdf.format(dt1); return reStr;

获取时间 // 使用默认时区和语言环境获得一个日历 Calendar cal = Calendar.getInstance(); // 赋值时年月日时分秒常用的6个值,注意月份下标从0开始,所以取月份要+1 System.out.println(“年:” + cal.get(Calendar.YEAR)); System.out.println(“月:” + (cal.get(Calendar.MONTH) + 1)); System.out.println(“日:” + cal.get(Calendar.DAY_OF_MONTH)); System.out.println(“时:” + cal.get(Calendar.HOUR_OF_DAY)); System.out.println(“分:” + cal.get(Calendar.MINUTE)); System.out.println(“秒:” + cal.get(Calendar.SECOND));

今天是 2021 年 4 月 6 日,运行结果:

年:2021 月:4 日:6 时:15 分:57 秒:39

设置时间 月份的下标从 0 开始,设置时同样需要注意,比如我们设置为 2 月 15 日除夕当晚的倒计时的最后一秒: 2018-02-15 23:59:59 可以这样:

Calendar cal = Calendar.getInstance(); // 如果想设置为某个日期,可以一次设置年月日时分秒,由于月份下标从0开始赋值月份要-1 // cal.set(year, month, date, hourOfDay, minute, second); cal.set(2018, 1, 15, 23, 59, 59);

或者也可以单个字段一一设置:

// 或者6个字段分别进行设置,由于月份下标从0开始赋值月份要-1 cal.set(Calendar.YEAR, 2018); cal.set(Calendar.MONTH, Calendar.FEBRUARY); cal.set(Calendar.DAY_OF_MONTH, 15); cal.set(Calendar.HOUR_OF_DAY, 23); cal.set(Calendar.MINUTE, 59); cal.set(Calendar.SECOND, 59); System.out.println(cal.getTime());

打印的时间结果为:

Thu Feb 15 23:59:59 CST 2018

时间计算 add方法: 比如在除夕当晚最后一秒,add 一秒:

Calendar cal = Calendar.getInstance(); System.out.println(cal.getTime()); cal.set(2018, 1, 15, 23, 59, 59); cal.add(Calendar.SECOND, 1); System.out.println(cal.getTime());

打印时间结果如下,日期会自动进入下一天:

Thu Feb 15 23:59:59 CST 2018 Fri Feb 16 00:00:00 CST 2018

再比如 1 月 31 号的时候,月份加一,会出现怎样结果:

Calendar cal = Calendar.getInstance(); cal.set(2018, 1, 31, 8, 0, 0); System.out.println(cal.getTime()); cal.add(Calendar.MONTH, 1); System.out.println(cal.getTime());

运行结果:

Wed Jan 31 08:00:00 CST 2018 Wed Feb 28 08:00:00 CST 2018

1、JAVA中日期Date的获取、设置和格式化

Java Date Date acquisition, setting, and formatting (1)JAVA提供了3个日期类:Date、Calendar和DateFormat。 (1) Java provides 3 date classes: Date, Calendar and DateFormat. Date()方法主要用于创建日期对象并获取日期; The Date () method is mainly used to create a date object and obtain the date;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    Calendar()方法主要用于获取和设置日期;

The Calendar () method is mainly used to obtain and set the date; DateFormat()方法主要用于创建日期格式化器,然后再由格式化器将日期转换为各种日期格式串输出。 The dateformat () method is primarily used to create a date formatting, and then convert the date to a variety of date format string outputs by the formatter.

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(2JAVA语言规定的基准日期为格林尼治标准时间1970.1.1.00:00:00,当前日期是由基准日期开始所经历的毫秒数转换出来的。

(2) The reference date specified in the Java language is Greenwise Standard Time 1970.1.1.00:00:00, and the current date is converted by the number of milliseconds experienced by the benchmark date.

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(3)DateFomat类在java.text包中,Date和Calendar类在java.util包中。

(3) The DateFomat class is in the Java.Text package, the Date and Calendar classes are in the java.util package. (4)实例如下:

(4) Examples are as follows:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  import java.util.*;
   import java.text.*;        
    public class DisplayDate { 
        public static void main(String[] args){ 
            Date today; 
            Calendar now; 
            DateFormat f1,f2; 
            String s1,s2;
            System.out.println("\n显示Date类的相关用法");
            today = new Date(); System.out.println("new Date()= \t"+ today);
            System.out.println("\n用DateFormat类显示各种日期格式");
            //显示各种日期格式 
            f1 = DateFormat.getDateInstance(); s1 = f1.format(today); 
            System.out.println("DateFormat.getDateInstance()= \t"+s1);
            f1 = DateFormat.getDateInstance(DateFormat.LONG,Locale.CHINA); 
            s1 = f1.format(today); 
            System.out.println("DateFormat.getDateInstance(DateFormat.LONG,Locale.CHINA)= 
\t"+ s1);
            f1 = DateFormat.getDateInstance(DateFormat.MEDIUM,Locale.CHINA); 
            s1 = f1.format(today); 
            System.out.println("DateFormat.getDateInstance(DateFormat.MEDIUM,Locale.CHINA)= \t"+ s1);
            f1 = DateFormat.getDateInstance(DateFormat.SHORT,Locale.CHINA); 
            s1 = f1.format(today); 
            System.out.println("DateFormat.getDateInstance(DateFormat.SHORT,Locale.CHINA)= 
\t" + s1);
            System.out.println("\n用DateFormat类显示各种时间格式");
            //显示各种时间格式 
            f1 = DateFormat.getTimeInstance(); 
            s1 = f1.format(today); 
            System.out.println("DateFormat.getTimeInstance()= \t"+s1);
            f1 = DateFormat.getTimeInstance(DateFormat.LONG,Locale.CHINA); 
            s1 = f1.format(today); 
            System.out.println("DateFormat.getTimeInstance(DateFormat.LONG,Locale.CHINA)= 
\t"+s1);
            f1 = DateFormat.getTimeInstance(DateFormat.MEDIUM,Locale.CHINA); 
            s1 = f1.format(today); 
            System.out.println("DateFormat.getTimeInstance(DateFormat.MEDIUM,Locale.CHINA)= \t"+s1);
            f1 = DateFormat.getTimeInstance(DateFormat.SHORT,Locale.CHINA); 
            s1 = f1.format(today); 
            System.out.println("DateFormat.getTimeInstance(DateFormat.SHORT,Locale.CHINA)= \t"+s1);
            System.out.println("\n显示Calendar的相关时间用法");
            now = Calendar.getInstance(); today = now.getTime(); 
            System.out.println("Calendar.getInstance().getTime()= \t"+ 
today.toString());
        } 
    }

程序运行结果显示如下:

显示Date类的相关用法 new Date()= Fri May 02 13:29:32 CST 2021

用DateFormat类显示各种日期格式 DateFormat.getDateInstance()= 2003-5-2 DateFormat.getDateInstance(DateFormat.LONG,Locale.CHINA)= 2003年5月2日 DateFormat.getDateInstance(DateFormat.MEDIUM,Locale.CHINA)= 2003-5-2 DateFormat.getDateInstance(DateFormat.SHORT,Locale.CHINA)= 03-5-2

用DateFormat类显示各种时间格式 DateFormat.getTimeInstance()= 13:29:32 DateFormat.getTimeInstance(DateFormat.LONG,Locale.CHINA)= 下午01时29分32秒 DateFormat.getTimeInstance(DateFormat.MEDIUM,Locale.CHINA)= 13:29:32 DateFormat.getTimeInstance(DateFormat.SHORT,Locale.CHINA)= 下午1:29

显示Calendar的相关时间用法 Calendar.getInstance().getTime()= Fri May 02 13:29:33 CST 2003

3.计算一年中的第几星期 (1)计算某一天是一年中的第几星期

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 Calendar cal=Calendar.getInstance(); 
    cal.set(Calendar.YEAR, 2006); 
    cal.set(Calendar.MONTH, 8); 
    cal.set(Calendar.DAY_OF_MONTH, 3); 
    int weekno=cal.get(Calendar.WEEK_OF_YEAR);

(2)计算一年中的第几星期是几号

SimpleDateFormat df=new SimpleDateFormat(“yyyy-MM-dd”); Calendar cal=Calendar.getInstance(); cal.set(Calendar.YEAR, 2006); cal.set(Calendar.WEEK_OF_YEAR, 1); cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); System.out.println(df.format(cal.getTime()));

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//输出: 2006-01-02

4.计算某一月份的最大天数

Calendar time=Calendar.getInstance(); time.clear(); time.set(Calendar.YEAR,year); time.set(Calendar.MONTH,i-1);//注意,Calendar对象默认一月为0 int day=time.getActualMaximum(Calendar.DAY_OF_MONTH);//本月份的天数 注:在使用set方法之前,必须先clear一下,否则很多信息会继承自系统当前时间

5.add()和roll()的用法 (1)add()方法

SimpleDateFormat df=new SimpleDateFormat(“yyyy-MM-dd”); Calendar cal=Calendar.getInstance(); cal.set(Calendar.YEAR, 2006); cal.set(Calendar.MONTH, 8); //MONTH是从0开始计的,这里输出是9月 cal.set(Calendar.DAY_OF_MONTH, 3); cal.add(Calendar.DATE, -4); Date date=cal.getTime(); System.out.println(df.format(date)); cal.add(Calendar.DATE, 4); date=cal.getTime(); System.out.println(df.format(date));

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//输出:2006-08-30 
//输出:2006-09-03

(2)roll方法

cal.set(Calendar.YEAR, 2006); cal.set(Calendar.MONTH, 8); cal.set(Calendar.DAY_OF_MONTH, 3); cal.roll(Calendar.DATE, -4); date=cal.getTime(); System.out.println(df.format(date)); cal.roll(Calendar.DATE, 4); date=cal.getTime(); System.out.println(df.format(date));

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//输出:2006-09-29 
//输出:2006-09-03
可见,roll()方法在本月内循环,一般使用add()方法;

6.计算两个任意时间中间的间隔天数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    (1)传进Calendar对象
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  /*
     * 计算两个时间之间相隔天数 
     * @param startday 开始时间 
     * @param endday 结束时间 
     * @return 
     */ 
    public int getIntervalDays(Calendar startday,Calendar endday){ 
        //确保startday在endday之前 
        if(startday.after(endday)){ 
            Calendar cal=startday; 
            startday=endday; 
            endday=cal; 
        } 
        //分别得到两个时间的毫秒数 
        long sl=startday.getTimeInMillis(); 
        long el=endday.getTimeInMillis();
        long ei=el-sl; 
        //根据毫秒数计算间隔天数 
        return (int)(ei/(1000*60*60*24)); }

(2)传进Date对象

/* 计算两个时间之间相隔天数 * @param startday 开始时间 * @param endday 结束时间 * @return / public int getIntervalDays(Date startday,Date endday){ //确保startday在endday之前 if(startday.after(endday)){ Date cal=startday; startday=endday; endday=cal; } //分别得到两个时间的毫秒数 long sl=startday.getTime(); long el=endday.getTime(); long ei=el-sl; //根据毫秒数计算间隔天数 return (int)(ei/(10006060*24)); }

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//同理,可以用相同的方法计算出任意两个时间相隔的小时数,分钟数,秒钟数等 注:以上方法是完全按时间计算,有时并不能令人满意,如: 
startday="2006-10-11 20:00:00" 
endday="2006-10-12 8:00:00" 
//计算结果为0,但是我们也许相让计算结果变为1,此时可以用如下方法实现: 在传参之前,先设定endday的时间,如: 
endday.set(Calendar.HOUR_OF_DAY, 23); 
endday.set(Calendar.MINUTE, 59); 
endday.set(Calendar.SECOND, 59); 
endday.set(Calendar.MILLISECOND, 59); 
//这样再传进去startday,endday,则结果就如我们所愿了。不过,如果嫌以上方法麻烦,可以参考以下方法:

(3)改进精确计算相隔天数的方法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  public int getDaysBetween (Calendar d1, Calendar d2) {             
	        if (d1.after(d2)) {
	            // swap dates so that d1 is start and d2 is end 
	            java.util.Calendar swap = d1;                 
	            d1 = d2;                 
	            d2 = swap;             
	        }             
	        int days = d2.get(Calendar.DAY_OF_YEAR) - d1.get(Calendar.DAY_OF_YEAR);                  int y2 = d2.get(Calendar.YEAR);             
	        if (d1.get(Calendar.YEAR) != y2) {                 
	            d1 = (Calendar) d1.clone();                 
	            do {                     
	                days += d1.getActualMaximum(Calendar.DAY_OF_YEAR);
	                //得到当年的实际天数                     
	                d1.add(Calendar.YEAR, 1);                 
	            } while (d1.get(Calendar.YEAR) != y2);         
	         }         
	         return days; 
	    }

2、SimpleDateFormat

~ 1. SimpleDateFormat 介绍 SimpleDateFormat 是DateFormat的子类,一个格式化Date 以及 解析日期字符串 的工具。它的最常用途是,能够按照指定的格式来对Date进行格式化,然后我们使用可以格式化Date后得到的字符串。 更严格的说,SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。~

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SimpleDateFormat的构造函数:
     构造函数

SimpleDateFormat()                
SimpleDateFormat(String pattern)
SimpleDateFormat(String template, DateFormatSymbols value)
SimpleDateFormat(String template, Locale locale)
    非构造函数

void    applyLocalizedPattern(String template)        
void    applyPattern(String template)
Object    clone()
boolean    equals(Object object)
StringBuffer    format(Date date, StringBuffer buffer, FieldPosition fieldPos)
AttributedCharacterIterator    formatToCharacterIterator(Object object)
Date    get2DigitYearStart()
DateFormatSymbols    getDateFormatSymbols()
int    hashCode()
Date    parse(String string, ParsePosition position)
void    set2DigitYearStart(Date date)
void    setDateFormatSymbols(DateFormatSymbols value)
String    toLocalizedPattern()
String    toPattern()
SimpleDateFormat 简单示范:

// 新建date对象,时间是2013-09-19        
Date date = new Date(113,8,19); 
// 新建“SimpleDateFormat对象”,并设置 sdf 的“格式化模式”
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
// 用 sdf 格式化 date,并返回字符串。
String str = sdf.format(date);

2. SimpleDateFormat 相关格式说明

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
2.1 日期和时间模式
    日期和时间格式由日期和时间模式 字符串指定。在日期和时间模式字符串中,未加引号的字母 'A''Z''a''z' 被解释为模式字母,用来表示日期或时间字符串元素。文本可以使用单引号 (') 引起来,以免进行解释。"''" 表示单引号。所有其他字符均不解释;只是在格式化时将它们简单复制到输出字符串,或者在解析时与输入字符串进行匹配。

定义了以下模式字母(所有其他字符 ‘A’ 到 ‘Z’ 和 ‘a’ 到 ‘z’ 都被保留):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
字母	日期或时间元素	表示	示例
G	Era 标志符	Text	AD
y	年	Year	1996; 96
M	年中的月份	Month	July; Jul; 07
w	年中的周数	Number	27
W	月份中的周数	Number	2
D	年中的天数	Number	189
d	月份中的天数	Number	10
F	月份中的星期	Number	2
E	星期中的天数	Text	Tuesday; Tue
a	Am/pm 标记	Text	PM
H	一天中的小时数(0-23)	Number	0
k	一天中的小时数(1-24)	Number	24
K	am/pm 中的小时数(0-11)	Number	0
h	am/pm 中的小时数(1-12)	Number	12
m	小时中的分钟数	Number	30
s	分钟中的秒数	Number	55
S	毫秒数	Number	978
z	时区	General time zone	Pacific Standard Time; PST; GMT-08:00
Z	时区	RFC 822 time zone	-0800

模式字母通常是重复的,其数量确定其精确表示: Text: 对于格式化来说,如果模式字母的数量大于等于 4,则使用完全形式;否则,在可用的情况下使用短形式或缩写形式。对于解析来说,两种形式都是可接受的,与模式字母的数量无关。 Number: 对于格式化来说,模式字母的数量是最小的数位,如果数位不够,则用 0 填充以达到此数量。对于解析来说,模式字母的数量被忽略,除非必须分开两个相邻字段。 Year: 如果格式器的 Calendar 是格里高利历,则应用以下规则。 Month: 如果模式字母的数量为 3 或大于 3,则将月份解释为 text;否则解释为 number。 对于格式化来说,如果模式字母的数量为 2,则年份截取为 2 位数,否则将年份解释为 number。 对于解析来说,如果模式字母的数量大于 2,则年份照字面意义进行解释,而不管数位是多少。因此使用模式 “MM/dd/yyyy”,将 “01/11/12” 解析为公元 12 年 1 月 11 日。 在解析缩写年份模式(“y” 或 “yy”)时,SimpleDateFormat 必须相对于某个世纪来解释缩写的年份。这通过将日期调整为 SimpleDateFormat 实例创建之前的 80 年和之后 20 年范围内来完成。例如,在 “MM/dd/yy” 模式下,如果 SimpleDateFormat 实例是在 1997 年 1 月 1 日创建的,则字符串 “01/11/12” 将被解释为 2012 年 1 月 11 日,而字符串 “05/04/64” 将被解释为 1964 年 5 月 4 日。在解析时,只有恰好由两位数字组成的字符串(如 Character#isDigit(char) 所定义的)被解析为默认的世纪。其他任何数字字符串将照字面意义进行解释,例如单数字字符串,3 个或更多数字组成的字符串,或者不都是数字的两位数字字符串(例如"-1")。因此,在相同的模式下, “01/02/3” 或 “01/02/003” 解释为公元 3 年 1 月 2 日。同样,“01/02/-3” 解析为公元前 4 年 1 月 2 日。 否则,则应用日历系统特定的形式。对于格式化和解析,如果模式字母的数量为 4 或大于 4,则使用日历特定的 long form。否则,则使用日历特定的 short or abbreviated form。 SimpleDateFormat 还支持本地化日期和时间模式 字符串。在这些字符串中,以上所述的模式字母可以用其他与语言环境有关的模式字母来替换。SimpleDateFormat 不处理除模式字母之外的文本本地化;而由类的客户端来处理。 示例 以下示例显示了如何在美国语言环境中解释日期和时间模式。给定的日期和时间为美国太平洋时区的本地时间 2001-07-04 12:08:56。

日期和时间模式 结果

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
"yyyy.MM.dd G 'at' HH:mm:ss z"	2001.07.04 AD at 12:08:56 PDT
"EEE, MMM d, ''yy"	Wed, Jul 4, '01
"h:mm a"	12:08 PM
"hh 'o''clock' a, zzzz"	12 o'clock PM, Pacific Daylight Time
"K:mm a, z"	0:08 PM, PDT
"yyyyy.MMMMM.dd GGG hh:mm aaa"	02001.July.04 AD 12:08 PM
"EEE, d MMM yyyy HH:mm:ss Z"	Wed, 4 Jul 2001 12:08:56 -0700
"yyMMddHHmmssZ"	010704120856-0700
"yyyy-MM-dd'T'HH:mm:ss.SSSZ"	2001-07-04T12:08:56.235-0700

日期格式是不同步的。建议为每个线程创建独立的格式实例。如果多个线程同时访问一个格式,则它必须是外部同步的。

3、部分方法实例

1.Calendar和Date的转化 (1) Calendar转化为Date

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Calendar cal=Calendar.getInstance(); 
Date date=cal.getTime();

(2) Date转化为Calendar

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    Date date=new Date(); 
    Calendar  cal=Calendar.getInstance(); 
    cal.setTime(date);

2.格式化输出日期时间及将日期转换为字符串

Date date=new Date(); SimpleDateFormat df=new SimpleDateFormat(“yyyy-MM-dd hh:mm:ss”); System.out.println(df.format(date));

String dateStr = “2017-01-01 18:00:00”; SimpleDateFormat df24 = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”); System.out.println(df24.parse(dateStr));

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-09-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
统信服务器操作系统V20 1060e【KVM 虚拟化】
KVM(Kernel-based Virtual Machine)是一个基于Linux内核的开源虚拟化解决方案,它允许在单个物理服务器上运行多个虚拟机。每个虚拟机都可以运行自己的操作系统和应用程序。KVM利用了Linux内核的虚拟化功能,通过将物理主机的资源(如CPU、内存和网络接口)动态分配给虚拟机,实现了对虚拟机的隔离和资源管理。
Kevin song
2024/04/28
9960
统信服务器操作系统V20 1060e【KVM 虚拟化】
统信服务器操作系统V20 1060e [kvm虚拟机磁盘在线扩容]
kvm虚拟机通过使用`attach-disk`命令在线新增虚拟磁盘,使用`blockresize`命令在线调整现有虚拟磁盘大小,增加存储空间并提升性能。虚拟机内部系统采用lvm逻辑卷管理技术,创建和管理逻辑卷,实现磁盘存储空间的动态管理。
Kevin song
2024/07/04
4720
统信服务器操作系统V20 1060e [kvm虚拟机磁盘在线扩容]
麒麟系统V10 SP2 KVM virt-install 创建虚拟机
从ftp,http,nfs启动,如ftp://192.168.10.7/dvd;nfs:192.168.10.7:/dvd
Kevin song
2022/11/19
4.9K0
麒麟系统V10 SP2 KVM virt-install 创建虚拟机
virsh查看虚拟网络信息_kvm创建虚拟机
1.virsh查看/管理虚拟机 问题 本案例要求熟悉KVM虚拟化的virsh管理工具的的基本使用,从命令行来操作虚拟机,完成以下基本任务: 1)查看KVM服务器信息 2)列出有哪些虚拟机、指定虚拟机的状态 3)基本的开关机操作 4)将虚拟机设置为自动运行 方案 virsh命令行管理的常见用法: 1)virsh:直接进交互模式 2)virsh nodeinfo:查看KVM节点(服务器)信息 3)virsh list:列出正在运行的虚拟机 4)virsh list –all:列出所有虚拟机(包括未启动的) 5)virsh dominfo 虚拟机名称:查看指定虚拟机的信息 6)virsh start 虚拟机名称:将指定的虚拟机开机 7)virsh reboot 虚拟机名称:将指定的虚拟机重启 8)virsh shutdown 虚拟机名称:将指定的虚拟机正常关机 9)virsh destroy 虚拟机名称:将指定的虚拟机强制关机(相当于拔电源) 10)virsh autostart 虚拟机名称:将指定的虚拟机设置随KVM自动开机 11)virsh autostart –disable 虚拟机名称:禁止自动开机 步骤 实现此案例需要按照如下步骤进行。 步骤一:直接使用virsh交互模式 执行不带任何参数的virsh命令,即可进入交互模式。在virsh交互模式下,可以快速、连续地执行多条虚拟机管理指令,不用每次都指定virsh,最后再exit退出;这种方式与在Shell命令行执行virsh时后面跟上虚拟机管理指令的作用是等效的。 [root@kvmsvr ~]# virsh //进入virsh交互模式 欢迎使用 virsh,虚拟化的交互式终端。
全栈程序员站长
2022/09/21
1.7K0
virsh查看虚拟网络信息_kvm创建虚拟机
KVM虚拟机管理
模板类似于生活中的模具,可以根据模具制作出很多一模一样的产品。模板在计算机中应用是比较多的,用户可以根据模板去批量生成应用。
星哥玩云
2022/09/15
1.1K0
申威欧拉虚拟机启动
首先需要确保hmcode是1.20版本,然后修改/boot/grub/grub.cfg文件,内核参数改为:
风起--追风
2024/01/31
4270
虚拟机克隆技术介绍
虚拟机克隆是指基于已有的虚拟机创建一个相同配置和内容的副本,虚拟机克隆过程中会生成和原始虚拟机不同的MAC地址和UUID,允许克隆的虚拟机和原始虚拟机在同一网络中出现,并且不会产生任何冲突。
Kevin song
2023/12/04
7910
虚拟机克隆技术介绍
测试开发之系统篇-按需创建测试虚拟机
新建KVM虚拟机时,可以指定另一磁盘文件作为BackingFile。BackingFile是一个只读的虚拟磁盘基础映像,可以在多个虚拟机间进行共享。基于BackingFile创建和运行虚拟机时,只会在自己的磁盘文件中增量地写入文件,从而提高效率、节省磁盘和维护成本。
陈哥聊测试
2021/08/05
7401
Linux系统下KVM虚拟机的基本管理和操作
一、检查本地环境1.检查系统版本[root@serer1 ~]# cat /etc/os-release NAME="CentOS Linux"VERSION="7 (Core)"ID="centos"ID\_LIKE="rhel fedora"VERSION\_ID="7"PRETTY\_NAME="CentOS Linux 7 (Core)"ANSI\_COLOR="0;31"CPE\_NAME="cpe:/o:centos:centos:7"HOME\_URL="https://www.centos.
江湖有缘
2023/01/19
2K0
Linux系统下KVM虚拟机的基本管理和操作
KVM 虚拟化技术
1.1 前言 1.1.1 什么是虚拟化? 在计算机技术中,虚拟化(技术)或虚拟技术(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源(CPU、内存、磁盘空间、网络适配器
惨绿少年
2018/03/30
6.1K0
KVM管理虚拟机
在上一篇中,我们介绍了如何在 CentOS7上安装并配置KVM,以及通过KVM安装CentOS系统。本篇则是介绍在KVM里安装完虚拟机后,如何使用KVM来管理虚拟机。
端碗吹水
2020/09/23
2K0
KVM虚拟机安装、管理
KVM全称Kernel-based Virtual Machine,翻译过来是基于内核的虚拟机,实际它是Linux内核的一个模块。该模块将Linux变为一个Hypervisor,由Quramnet开发,支持x86、s390、Powerpc等CPU。它使用Linux自身的调度器进行管理,所以相对于Xen,其核心源码很少。KVM目前已成为学术界的主流VMM之一。
用户8704835
2021/06/08
1.1K0
KVM 简介
KVM(Kernel-based Virtual Machine) ,基于内核的虚拟机,配合QEMU(处理器虚拟软件),需要CPU支持虚拟化技术(并且在BIOS里打开虚拟化选项),效率可达到物理机的80%以上。此外,它对SMP的支持很好。
为为为什么
2022/08/06
1.7K0
KVM--虚拟机备份还原(二十)
随着云计算,虚拟化在生产业务中的大规模推广,虚拟机的备份恢复显的尤为重要。面对勒索病毒,数据误删等事件,最重要的就是有“备份数据”可供恢复,从而解决数据丢失业务中断的问题。
Kevin song
2022/11/19
2K0
部署KVM虚拟化平台
1、kvm需要cpu支持虚拟化并装相关软件包。 Yum -y install qemu-kvm.x86_64 qemu-kvm-tools.x86_64 python-virtinst.noarch qemu-img.x86_64 bridge-utils.x86_64 libvirt virt-manager 查看cpu是否支持虚拟化。 cat /proc/cpuinfo | grep vmx AMD服务器: cat /proc/cpuinfo | grep smv 2、kvm网络
L宝宝聊IT
2018/06/20
1.3K0
部署KVM虚拟化平台示例
实验要求: 1、安装KVM所需软件,验证。 2、设置KVM网络,将网络设置为桥接模式。 3、使用virt-manager安装linux系统。 4、学会基本kvm管理的命令 (1)查看虚拟机的状态 (2)虚拟机的关机,强制关机和开机 (3)虚拟机的挂起和恢复 (4)配置虚拟机实例伴随宿主机自动启动 (5)导出虚拟机配置 5、kvm文件管理 (1)将raw格式磁盘转换为qcow2格式 (2)转换后,修改xml配置文件 (3)查看虚拟机磁盘信息 6、虚拟机克隆 7、虚拟机快照管理 步骤: 1、搭建yum,安装KV
L宝宝聊IT
2018/06/20
9310
如何在 Ubuntu 22.04 服务器上安装和配置 KVM?
KVM(Kernel-based Virtual Machine)是一种基于内核的虚拟化技术,它允许你在 Linux 操作系统上创建和管理虚拟机。在 Ubuntu 22.04 服务器上安装 KVM 可以提供强大的虚拟化能力,使你能够轻松运行多个独立的虚拟机。本文将详细介绍如何在 Ubuntu 22.04 服务器上安装和配置 KVM。
网络技术联盟站
2023/06/09
4.2K0
如何在 Ubuntu 22.04 服务器上安装和配置 KVM?
Cent os 7之KVM虚拟化基础管理
至此,命令行创建虚拟机就完成了,接下来使用手动更改配置文件的方式,克隆test1,生成新的虚拟机test2(在我博文前面的那个博文链接中有专用于克隆的命令工具的使用方法,这里只是为了来了解虚拟机的配置文件) 二、手动更改配置文件的方式,克隆web01,生成新的虚拟机web02
小手冰凉
2020/07/29
7480
Cent os 7之KVM虚拟化基础管理
虚拟机磁盘挂载,本地映射
<driver name='qemu' type='raw' cache='none'/>
风起--追风
2023/12/26
3550
KVM 应用-创建虚拟机
KVM虚拟化部署完成了,接下来我们要做的就是创建一个KVM虚拟机,如何创建呢?本节课程主要讨论。
星哥玩云
2022/09/15
3.2K0
KVM 应用-创建虚拟机
相关推荐
统信服务器操作系统V20 1060e【KVM 虚拟化】
更多 >
目录
  • 前言
    • 0.Java中Calendar类的常用方法(对时间进行计算的类)
    • 1、JAVA中日期Date的获取、设置和格式化
    • 6.计算两个任意时间中间的间隔天数
    • 2、SimpleDateFormat
    • 2. SimpleDateFormat 相关格式说明
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档