Java8 - LocalDateTime时间日期类使用详解
![]()
🏷️个人主页:牵着猫散步的鼠鼠
🏷️系列专栏:Java全栈-专栏
🏷️个人学习笔记,若有缺误,欢迎评论区指正
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站AI学习网站。
目录
前言
一、LocalDateTime 的创建
1. of() 方法
2. now() 方法
3. parse() 方法
4. from() 方法
二、LocalDateTime 的转换
1. toLocalDate() 方法
2. toLocalTime() 方法
3. atOffset() 方法
4. toEpochSecond() 方法
5. from() 方法
三、LocalDateTime 的格式化与解析
1. format() 方法
2. parse() 方法
3. DateTimeFormatter 类
四、LocalDateTime 的计算与比较
1. plusXxx() 和 minusXxx() 方法
2. withXxx() 方法
3. isBefore() 和 isAfter() 方法
五、LocalDateTime 的其他操作
1. with() 方法
2. getXXX() 方法
3. getDayOfWeek() 和 getDayOfMonth() 方法
4. toInstant() 方法
5. compareTo() 方法
总结
前言
LocalDateTime 是 Java 8 中日期时间 API 提供的一个类,在日期和时间的表示上提供了更加丰富和灵活的支持。
LocalDateTime 类相比于早期的 Date 和 Calendar 类来说有以下几个优势:
-
更加丰富的日期时间类型支持: LocalDateTime 类封装了 LocalDate 和 LocalTime 两个类,支持更加细化的日期时间操作,例如获取某一天的开始和结束时间、获取某个时间段内的所有日期等。
-
线程安全性: LocalDateTime 类是不可变对象,线程安全性较高,可以在多线程环境下安全使用。
-
时区支持: LocalDateTime 类在处理时区相关的操作时有着很好的支持,例如可以将一个 LocalDateTime 对象转换成 ZonedDateTime 对象,以支持更加复杂的时区计算。
LocalDateTime 类的实现原理是基于 Java 的时间 API,其内部实现主要依赖于 Java 中的 long 类型和标准 Unix 时间戳来表示日期时间。具体来说,LocalDateTime 内部包含了一个 long 类型的字段,用于表示自 UTC(协调世界时)1970 年 1 月 1 日 00:00:00 开始经过的毫秒数(即 Unix 时间戳),通过对这个时间戳的操作来实现 LocalDateTime 类的各种功能。
同时,在实现时区相关的操作时,LocalDateTime 类还依赖于 Java 中的时区类(例如 ZoneId 和 ZoneOffset),通过将 LocalDateTime 转换为 ZonedDateTime 或 OffsetDateTime 对象来实现时区相关的计算。
一、LocalDateTime 的创建
LocalDateTime 类通过提供许多静态方法来创建对象,这些方法包括:
1. of() 方法
of() 方法用于根据指定的年、月、日、时、分、秒和纳秒值创建一个 LocalDateTime 对象,其语法如下:
public static LocalDateTime of(int year, int month, int dayOfMonth, int hour, int minute, int second, int nanoOfSecond)
其中,year、month、dayOfMonth、hour、minute、second 和 nanoOfSecond 分别表示年、月、日、时、分、秒和纳秒值。
例如,以下代码创建了一个 LocalDateTime 对象,表示 2019 年 10 月 30 日 14 点 30 分 0 秒:
LocalDateTime dateTime = LocalDateTime.of(2019, 10, 30, 14, 30, 0, 0);
2. now() 方法
now() 方法用于获取当前系统时间的 LocalDateTime 对象,其语法如下:
public static LocalDateTime now()
例如,以下代码创建了一个 LocalDateTime 对象,表示当前系统时间:
LocalDateTime dateTime = LocalDateTime.now();
3. parse() 方法
parse() 方法用于将一个字符串解析成 LocalDateTime 对象,其语法如下:
public static LocalDateTime parse(CharSequence text)
public static LocalDateTime parse(CharSequence text, DateTimeFormatter formatter)
其中,text 表示要解析的字符串,formatter 表示日期时间格式化对象。如果不指定 formatter,则默认使用 ISO_LOCAL_DATE_TIME 格式。
例如,以下代码创建了一个 LocalDateTime 对象,表示 2019 年 10 月 30 日 14 点 30 分 0 秒:
LocalDateTime dateTime = LocalDateTime.parse("2019-10-30T14:30:00");
4. from() 方法
from()方法用于将一个 TemporalAccessor 对象转换成 LocalDateTime 对象,其语法如下:
public static LocalDateTime from(TemporalAccessor temporal)
例如,以下代码将一个 ZonedDateTime 对象转换成 LocalDateTime 对象:
ZonedDateTime zonedDate = ZonedDateTime.of(2019, 10, 30, 14, 30, 0, 0, ZoneId.systemDefault());
LocalDateTime localDateTime = LocalDateTime.from(zonedDate);
二、LocalDateTime 的转换
LocalDateTime 类提供了许多方便的转换方法,我们可以把 LocalDateTime 转换成其他类型,或者把其他类型转换成 LocalDateTime。这些方法包括:
1. toLocalDate() 方法
toLocalDate()方法用于把 LocalDateTime 对象转换成 LocalDate 对象,其语法如下:
public LocalDate toLocalDate()
例如,以下代码将一个 LocalDateTime 对象转换成 LocalDate 对象:
LocalDateTime dateTime = LocalDateTime.of(2019, 10, 30, 14, 30, 0, 0);
LocalDate date = dateTime.toLocalDate();
2. toLocalTime() 方法
toLocalTime()方法用于把 LocalDateTime 对象转换成 LocalTime 对象,其语法如下:
public LocalTime toLocalTime()
例如,以下代码将一个 LocalDateTime 对象转换成 LocalTime 对象:
LocalDateTime dateTime = LocalDateTime.of(2019, 10, 30, 14, 30, 0, 0);
LocalTime time = dateTime.toLocalTime();
3. atOffset() 方法
atOffset() 方法用于把 LocalDateTime 对象转换成带偏移量的 OffsetDateTime 对象,其语法如下:
public OffsetDateTime atOffset(ZoneOffset offset)
其中,offset 表示要添加的时区偏移量。
例如,以下代码将一个 LocalDateTime 对象转换成带偏移量的 OffsetDateTime 对象:
LocalDateTime dateTime = LocalDateTime.of(2019, 10, 30, 14, 30, 0, 0);
ZoneOffset offset = ZoneOffset.of("+08:00");
OffsetDateTime offsetDateTime = dateTime.atOffset(offset);
4. toEpochSecond() 方法
toEpochSecond() 方法用于把 LocalDateTime 对象转换成 Unix 时间戳,其语法如下:
public long toEpochSecond(ZoneOffset offset)
其中,offset 表示要添加的时区偏移量。
例如,以下代码把一个 LocalDateTime 对象转换成 Unix 时间戳:
LocalDateTime dateTime = LocalDateTime.of(2019, 10, 30, 14, 30, 0, 0);
ZoneOffset offset = ZoneOffset.of("+08:00");
long epochSecond = dateTime.toEpochSecond(offset);
5. from() 方法
from() 方法用于将一个 TemporalAccessor 对象转换成 LocalDateTime 对象,其语法与前面讲解的相同,这里不再赘述。
三、LocalDateTime 的格式化与解析
日期时间的格式化与解析是 Java 8 中日期时间 API 中的重要功能。LocalDateTime 类通过内置的 DateTimeFormatter 类以及一些方法来实现格式化和解析。下面我们将详细介绍 LocalDateTime 类的格式化和解析方法。
1. format() 方法
format() 方法用于将 LocalDateTime 对象格式化成字符串,其语法如下:
public String format(DateTimeFormatter formatter)
其中,formatter 表示日期时间格式化对象。
例如,以下代码将一个 LocalDateTime 对象格式化成 " yyyy-MM-dd HH:mm:ss " 格式的字符串:
LocalDateTime dateTime = LocalDateTime.of(2019, 10, 30, 14, 30, 0, 0);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String strDate = dateTime.format(formatter);
2. parse() 方法
parse() 方法用于将一个字符串解析成 LocalDateTime 对象,其语法在前面已经介绍过,这里不再赘述。
例如,以下代码将一个字符串解析成 LocalDateTime 对象:
LocalDateTime dateTime = LocalDateTime.parse("2019-10-30T14:30:00");
3. DateTimeFormatter 类
DateTimeFormatter 类是 Java 8 中提供的日期时间格式化类,它提供了多种内置的格式化方式,同时也可以自定义日期时间格式。常用的几种内置格式化方式包括:
ofPattern() 方法 :使用指定的模式字符串创建一个 DateTimeFormatter 对象。
public static DateTimeFormatter ofPattern(String pattern)
例如,以下代码创建了一个 " yyyy-MM-dd HH:mm:ss " 格式的 DateTimeFormatter 对象:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
ISO_LOCAL_DATE_TIME :表示格式为 "yyyy-MM-ddTHH:mm:ss" 的日期时间。
public static final DateTimeFormatter ISO_LOCAL_DATE_TIME
例如,以下代码创建了一个 " yyyy-MM-ddTHH:mm:ss " 格式的 DateTimeFormatter 对象:
DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME;
ISO_LOCAL_DATE :表示格式为 "yyyy-MM-dd" 的日期。
public static final DateTimeFormatter ISO_LOCAL_DATE
例如,以下代码创建了一个 " yyyy-MM-dd " 格式的 DateTimeFormatter 对象:
DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_DATE;
四、LocalDateTime 的计算与比较
LocalDateTime 类还提供了一些方法来进行日期时间的计算和比较。这些方法包括:
1. plusXxx() 和 minusXxx() 方法
plusXxx() 和 minusXxx() 方法分别用于在当前 LocalDateTime 对象上加上或减去指定的日期时间量,其中 Xxx 表示日期时间单位,如:Years、Months、Days、Hours、Minutes、Seconds 和 Nanos。
例如,以下代码将一个 LocalDateTime 对象加上 1 年并减去 1 月:
LocalDateTime dateTime = LocalDateTime.of(2019, 10, 30, 14, 30, 0, 0);
dateTime = dateTime.plusYears(1).minusMonths(1);
2. withXxx() 方法
withXxx() 方法用于以指定的日期时间量来修改 LocalDateTime 对象的对应字段,其他字段不变,其中 Xxx 表示日期时间单位,如:Year、Month、DayOfMonth、Hour、Minute、Second 和 Nano。
例如,以下代码将 LocalDateTime 对象的年份修改为 2020 年:
LocalDateTime dateTime = LocalDateTime.of(2019, 10, 30, 14, 30, 0, 0);
dateTime = dateTime.withYear(2020);
3. isBefore() 和 isAfter() 方法
isBefore() 和 isAfter() 方法分别用于判断两个 LocalDateTime 对象的先后顺序。其中, isBefore() 方法用于判断当前 LocalDateTime 对象是否在参数对象之前, isAfter() 方法用于判断当前 LocalDateTime 对象是否在参数对象之后。
例如,以下代码判断两个 LocalDateTime 对象的先后顺序:
LocalDateTime dateTime1 = LocalDateTime.of(2019, 10, 30, 14, 30, 0, 0);
LocalDateTime dateTime2 = LocalDateTime.of(2020, 10, 30, 14, 30, 0, 0);
boolean before = dateTime1.isBefore(dateTime2); // true
boolean after = dateTime1.isAfter(dateTime2); // false
五、LocalDateTime 的其他操作
LocalDateTime 类还提供了一些其他操作,这些操作包括:
1. with() 方法
with() 方法用于以指定的 TemporalAdjuster 对象或者方法来修改 LocalDateTime 对象,例如,以下代码将 LocalDateTime 对象的日期调整为当前月份的第一天:
LocalDateTime dateTime = LocalDateTime.of(2019, 10, 30, 14, 30, 0, 0);
dateTime = dateTime.with(TemporalAdjusters.firstDayOfMonth());
其中,TemporalAdjusters 是 Java 8 中提供的一个类,它提供了许多方便的日期时间调整器,如: firstDayOfMonth() 、 lastDayOfMonth() 、 next() 、 previous() 等。通过调用这些方法可以生成对应的 TemporalAdjuster 对象。
2. getXXX() 方法
getXXX() 方法用于获取 LocalDateTime 对象的指定字段值,其中 Xxx 表示日期时间单位,如:Year、Month、DayOfMonth、Hour、Minute、Second 和 Nano。
例如,以下代码获取 LocalDateTime 对象的月份和分钟数:
LocalDateTime dateTime = LocalDateTime.of(2019, 10, 30, 14, 30, 0, 0);
int month = dateTime.getMonthValue(); // 10
int minute = dateTime.getMinute(); // 30
3. getDayOfWeek() 和 getDayOfMonth() 方法
getDayOfWeek() 和 getDayOfMonth() 方法分别用于获取 LocalDateTime 对象所表示日期的星期几和哪一天。例如,以下代码获取 LocalDateTime 对象的星期几和哪一天:
LocalDateTime dateTime = LocalDateTime.of(2019, 10, 30, 14, 30, 0, 0);
DayOfWeek dayOfWeek = dateTime.getDayOfWeek(); // WEDNESDAY
int dayOfMonth = dateTime.getDayOfMonth(); // 30
4. toInstant() 方法
toInstant() 方法用于获取 LocalDateTime 对象的 Instant 对象,其中 Instant 对象表示了从 1970 年 1 月 1 日 00:00:00 GMT 开始的毫秒数例如,以下代码获取 LocalDateTime 对象的 Instant 对象:
LocalDateTime dateTime = LocalDateTime.of(2019, 10, 30, 14, 30, 0, 0);
Instant instant = dateTime.toInstant();
5. compareTo() 方法
compareTo() 方法用于比较两个 LocalDateTime 对象的顺序大小,如果当前对象在参数对象之前,则返回负数,如果当前对象在参数对象之后,则返回正数,如果两个对象相等,则返回 0。
例如,以下代码比较两个 LocalDateTime 对象的顺序:
LocalDateTime dateTime1 = LocalDateTime.of(2019, 10, 30, 14, 30, 0, 0);
LocalDateTime dateTime2 = LocalDateTime.of(2020, 10, 30, 14, 30, 0, 0);
int result = dateTime1.compareTo(dateTime2); // -1
总结
本文从 LocalDateTime 类的创建、转换、格式化与解析、计算与比较以及其他操作几个方面详细介绍了 LocalDateTime 类在 Java 8 中的使用。
掌握 LocalDateTime 类的使用可以大大提高日期时间处理效率和质量,希望本文对读者有所帮助。

相关文章:
Java8 - LocalDateTime时间日期类使用详解
🏷️个人主页:牵着猫散步的鼠鼠 🏷️系列专栏:Java全栈-专栏 🏷️个人学习笔记,若有缺误,欢迎评论区指正 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默&…...
3D城市模型可视化:开启智慧都市探索之旅
随着科技的飞速发展,我们对城市的认知已经不再局限于平面的地图和照片。今天,让我们领略一种全新的城市体验——3D城市模型可视化。这项技术将带领我们走进一个立体、生动的城市世界,感受前所未有的智慧都市魅力。 3D城市模型通过先进的计算机…...
某查查首页瀑布流headers加密
目标网站: 某查查 对目标网站分析发现 红框内的参数和值都是加密的,是根据算法算出来的,故进行逆向分析。 由于没有固定参数名,只能通过搜索headers,在搜索的位置上打上断点,重新请求。 断点在此处断住&a…...
Microsoft Visio 文本框上标或下标
Microsoft Visio 文本框上标或下标 1. 文本框公式2. 选中需要成为上标或下标的部分,开始 - > 段落 -> 字体 -> 常规 -> 位置 -> 上标 / 下标3. 文本框公式4. 快捷键References 1. 文本框公式 2. 选中需要成为上标或下标的部分,开始…...
Java项目:29 基于SpringBoot+thymeleaf实现的图书管理系统
作者主页:源码空间codegym 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 基于SpringBootthymeleaf实现的图书管理系统分为管理员、读者两个登录角色,一共是8个功能模块 管理员权限 图书管理:…...
Unity游戏项目中的优化之摄像机视锥体剔除优化
在项目中一个完成的游戏场景一般都会有成千上百的物体,假如都去让GPU全部渲染一遍,那带来的消耗其实是挺大的,很多不在摄像机范围内的物体其实没有必要去渲染,尽管GPU自带剔除,但是如果从CPU阶段就提交给GPU指令——哪…...
超1000本计算机经典书籍分享(均可免费下载)
今天给大家推荐两个开源项目,均可百度网盘下载: 1 https://gitee.com/ForthEspada/CS-Books 超过1000本的计算机经典书籍、个人笔记资料以及作者在各平台发表文章中所涉及的资源等。 书籍资源包括C/C、Java、Python、Go语言、数据结构与算法、操作系统…...
AI大模型提供商有哪些?
AI大模型提供商:引领人工智能创新浪潮 随着人工智能技术的迅猛发展,AI大模型成为了推动行业变革和创新的核心驱动力之一。作为AI领域的重要参与者,AI大模型提供商扮演着关键的角色。本文将围绕这一主题,介绍几家在AI大模型领域具…...
【Linux】部署单机项目(自动化启动)
目录 一.jdk安装 二.tomcat安装 三.MySQL安装 四.部署项目 一.jdk安装 1.上传jdk安装包 jdk-8u151-linux-x64.tar.gz 进入opt目录,将安装包拖进去 2.解压安装包 防止后面单个系列解压操作,我这边就直接将所有的要用的全部给解压,如下图注…...
MySQL:使用聚合函数查询
提醒: 设定下面的语句是在数据库名为 db_book里执行的。 创建t_grade表 USE db_book; CREATE TABLE t_grade(id INT,stuName VARCHAR(20),course VARCHAR(40),score INT );为t_grade表里添加多条数据 INSERT INTO t_grade(id,stuName,course,score)VALUES(1,测试0…...
【Linux C | 网络编程】套接字选项、getsockopt、setsockopt详解及C语言例子
😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…...
Springboot解决模块化架构搭建打包错误找不到父工程
Springboot解决模块化架构搭建打包错误找不到父工程 一、情况一找不到父工程依赖1、解决办法 二、情况二子工程相互依赖提示"程序包xxx不存在" 一、情况一找不到父工程依赖 报错信息 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:…...
Android全屏黑边解决方案
在Android12以上的手机,设置全屏后屏幕底部有黑边或者白边,有的屏幕顶部有黑边。解决方案很简单,在使用的主题中添加对应的设置即可,如下: res/values/themes.xml <resources><style name"Base.Theme.La…...
【矩阵】【方向】【素数】3044 出现频率最高的素数
作者推荐 动态规划的时间复杂度优化 本文涉及知识点 素数 矩阵 方向 LeetCode 3044 出现频率最高的素数 给你一个大小为 m x n 、下标从 0 开始的二维矩阵 mat 。在每个单元格,你可以按以下方式生成数字: 最多有 8 条路径可以选择:东&am…...
什么是RPC?谈谈你对RPC的理解
RPC(Remote Procedure Call,远程过程调用)是一种计算机通信协议。它允许一台计算机(客户端)通过网络调用另一台计算机(服务器)上的程序,并等待该程序的结果返回。RPC抽象了网络通信的…...
C语言实现哈希查找之线性探测算法
C语言中实现一个简单的哈希表,并包括线性探测和二次探测再散列处理冲突的功能: 1. 定义哈希表结构 首先,定义一个哈希表的结构,包括存储空间、哈希表的大小等。 2. 实现哈希函数 选择一个合适的哈希函数来计算键值的哈希值。 …...
js:lodash template文件模板语法和应用
文档 https://www.lodashjs.com/docs/lodash.templatehttps://lodash.com/docs/4.17.15#template 语法 <% VALUE %> 用来做不转义插值;<%- VALUE %> 用来做 HTML 转义插值;<% expression %> 用来描述 JavaScript 流程控制。 示例 …...
在Windows系统上安装Docker和SteamCMD容器的详细指南有哪些?
在Windows系统上安装Docker和SteamCMD容器的详细指南有哪些? 安装Docker: 首先,需要在Windows操作系统上激活WSL2功能。这是因为Docker作为一个容器工具,依赖于已存在并运行的Linux内核环境。可以通过使用winget来安装Docker。具体…...
点击输入框,获取提示信息
HTML结构代码 <body><input><p>单击输入框获取焦点。</p><span>请输入你的电话号码?</span></body> Java script代码 <script type"text/JavaScript">let pdocument.getElementsByTagName(input)[0];console.lo…...
房贷计算器微信小程序原生语言
微信小程序: 房贷计算器 效果: 输入 300万 结果 还款明细 一共有3个页面 1、输入页面 2、结果页面 3、详情页面 1 index页面 index.wxml文件 <view class="text-black"><!--房屋总价--><view class="cu-bar bg-white solid-bottom"&…...
装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...
51c自动驾驶~合集58
我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...
centos 7 部署awstats 网站访问检测
一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats࿰…...
2.Vue编写一个app
1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...
MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...
生成 Git SSH 证书
🔑 1. 生成 SSH 密钥对 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 参数说明: -t rsa&#x…...
如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
GitFlow 工作模式(详解)
今天再学项目的过程中遇到使用gitflow模式管理代码,因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存,无论是github还是gittee,都是一种基于git去保存代码的形式,这样保存代码…...

