当前位置: 首页 > news >正文

基于Java的世界时区自动计算及时间生成方法

目录

前言

一、zoneinfo简介

1、zoneinfo是什么

2、zoneinfo有什么

二、在Java中进行时区转换

1、Java与zoneInfo

2、Java展示zoneInfo实例

3、Java获取时区ID

三、Java通过经纬度获取时区

1、通过经度求解偏移

2、通过偏移量计算时间

3、统一的处理算法

四、总结


前言

        随着全球化的发展,IT行业越来越多地涉及跨国合作。不同国家和地区的团队成员需要在不同时区下协同工作。合理分配工作时间、优化软件和服务设计,以及培训员工了解时差问题,对于提高跨文化沟通能力和工作效率至关重要。在网络通信中,服务器时间和UTC(协调世界时)被广泛用于全球时间计算。UTC通常表现为HH:MM:SS的形式,时区则用UTC+/-X的形式表示。服务器时间,如北京时间(UTC+8),对于文件压缩、数据备份、跟踪日志等操作至关重要。时区API在应用程序开发中扮演着重要角色,它们可以快速查询目标时区的当前时间,并提供是否有夏令时、UTC偏移量等数据。这对于需要处理全球用户时间的应用来说至关重要。

        在信息技术(IT)行业中,对世界时区的理解和应用至关重要。众所周知,全球共划分为24个时区,每个时区覆盖经度15度,这种划分基于地球自转,使得每个时区的中央经线地方时与太阳直射点的经度大致同步。全球的时区信息按照划分可以分为下图所示的时区分布:

        全球共分为24个时区。 这一划分是基于地球自转,每隔经度15°为一个时区,以格林尼治天文台旧址为中时区(零时区),设东1至12区、西1至12区,每个时区跨经度15度,最后的东、西12区各跨7.5度,以180度经线为界。每个时区的中央经线上的时间就是这个时区内统一采用的时间,称为区时,相邻两时区的时差为1小时。这种划分方式在很大程度上解决了各地时刻的混乱现象,使得世界上只有24种不同时刻存在,而且由于相邻时区间的时差恰好为1个小时,这样各不同时区间的时刻换算变得极为简单。

        时区在IT行业中的影响深远,从软件开发到网络安全,再到全球团队的协作,都需要对时区有深刻的理解和精确的管理。随着技术的发展,对时区的处理和管理也在不断进步,以适应全球化的挑战。本文即在此背景之下产生,文章首先介绍了一些IANA时区的相关知识,然后重点介绍在Java中如何进行时区的时间转换,同时还分别介绍基于IANA的时区加载和基于UTC的时区加载,通过实例的方式让大家掌握如何来进行时间的计算。如果我们的业务系统有海外的业务,对于时间的计算尤其有参考价值。

一、zoneinfo简介

        在正式进行时区相关的计算和生成之前,首先我们来了解一下zoneinfo。因此在这里对zoneInfo来做一个简单的介绍,为后续知识的展开奠定基础。

1、zoneinfo是什么

        IANA Time Zone Database,通常被称为tzdata(也可成为zoneinfo),是全球时间区数据的一个重要资源,它包含了世界各地的时区信息,包括夏令时规则、历史时区变更等。这个数据库被广泛用于操作系统、编程语言、网络服务和其他需要处理日期和时间的软件中,确保了准确的时间计算和转换。在这个库中,已经设置了夏令时规则,因此我们可以读取到相关的信息。tzdata的数据信息可以在互联网上公开下载。

        时区数据在计算机系统中扮演着核心角色,因为地球上的不同地区有着不同的时间标准。例如,"CET"代表中欧时间(Central European Time),"CST6CDT"代表美国中部标准时间(Central Standard Time)和中部夏令时(Central Daylight Time)。"EET"是东欧时间(Eastern European Time),“Egypt”、“Eire”(爱尔兰)、“EST”(东部标准时间,Eastern Standard Time)以及“EST5EDT”(美国东部标准时间和夏令时)都是 tzdata 数据库中特定时区的标识符。 tzdata 数据库的更新非常频繁,因为它需要反映各国政府对时区和夏令时政策的更改。例如,埃及可能会在某些年份暂停实施夏令时,这样的变化就需要被tzdata记录并更新,以便软件能够正确处理这些地区的日期和时间。

2、zoneinfo有什么

        处理tzdata涉及到的关键概念包括: 1. 时区ID:每个时区都有一个唯一的标识符,如“America/New_York”,这些ID在tzdata中定义,并被用来指定地理位置。 2. 夏令时规则:tzdata包含了各个国家和地区开始和结束夏令时的具体日期和时间,以及夏令时期间时钟如何前进或后退的规则。 3. 历史变更:由于政治和地理原因,一些时区的历史时间标准会改变,tzdata记录了这些变更,使得软件可以处理过去的时间点。 4. 偏移量:每个时区相对于UTC的小时和分钟偏移量,可以是正数(向东)或负数(向西)。 5. 区域文件:tzdata由一系列区域文件组成,每个文件对应一个或多个时区,包含了该地区的全部时间规则。 

        zoneinfo 文件通常由相关操作系统或软件管理,例如 Unix 和 Linux 操作系统中的 tzdata 包。随着时区更改不断发生,这些文件也需保持不断的更新,以反映出最新的时区信息和规则。因为 zoneinfo 文件包含有关时区规则的信息,所以它们在应用程序中非常有用。例如,当应用程序需要将 UTC 时间转换为本地时间时,它首先会使用系统中的 zoneinfo 文件来确定本地时区的偏移量和夏令时规则,然后应用这些规则来计算出本地时间。

        介绍完了zoneInfo的基本知识后,下面我们深入介绍在Java当中,如何进行时区的识别和读取,最后根据不同的时区来输出其对应的时区时间。

二、在Java中进行时区转换

        Java中的ZoneInfo类是java.time包的一部分,用于表示时区信息。它提供了一种灵活的方式来处理全球时区,包括夏令时的变更。ZoneInfo类取代了旧版Java中使用的SimpleTimeZoneTimeZone类,因为它支持国际时区规则的变化,这些规则可能会因为政治或社会因素而调整。因此这里来介绍一下Java中如何来使用zoneInfo对象。

1、Java与zoneInfo

        zoneInfo实例可以通过ZoneId系统来获取,ZoneId是时区的唯一标识符。例如,可以通过ZoneId.systemDefault()获取系统默认时区,或者通过ZoneId.of("Europe/Paris")获取特定地区的时区。ZoneInfo提供了诸如获取时区的ID、规则、偏移量等信息的方法。它还支持夏令时的自动调整,这意味着当夏令时开始或结束时,ZoneInfo能够自动更新偏移量。

        在Java 8及以后的版本中,ZoneInfo是处理时区相关操作的首选方式,因为它提供了更好的准确性和更丰富的API支持。开发者可以利用ZonedDateTimeOffsetDateTime等类结合ZoneInfo来处理带时区的日期和时间。

2、Java展示zoneInfo实例

        下面结合一段实例的代码来重点讲解一下在Java当中是如何来实现zoneinfo的加载,同时格式化相关的时间信息。代码如下:

// 创建一个ZonedDateTime实例,表示当前时间在系统默认时区
ZonedDateTime nowInSystemZone = ZonedDateTime.now();
// 打印系统默认时区的时间
System.out.println("Current time in system default zone: " + nowInSystemZone);
// 指定目标时区,例如:美国东部时区
ZoneId newYorkZoneId = ZoneId.of("America/New_York");
// 将当前时间转换为目标时区的时间
ZonedDateTime newYorkTime = nowInSystemZone.withZoneSameInstant(newYorkZoneId);
// 打印转换后的时间
System.out.println("Current time in New York: " + newYorkTime);
// 使用DateTimeFormatter格式化时间输出
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss z");
String formattedNewYorkTime = newYorkTime.format(formatter);
// 打印格式化后的时间
System.out.println("Formatted New York time: " + formattedNewYorkTime);

        执行上面的程序后,可以看到在控制台中有以下的输出:

Current time in system default zone: 2024-12-12T23:24:44.062+08:00[Asia/Shanghai]
Current time in New York: 2024-12-12T10:24:44.062-05:00[America/New_York]
Formatted New York time: 2024-12-12 10:24:44 EST

        大家可以看到,在程序中有America/New_York这样的时区标记。这其实就是标准的数据库信息。通过这个时区标识就能准确的进行时区的计算。

3、Java获取时区ID

        当我们知道了时区ID之后,下面我们就可以来看一下默认情况,我们的系统中默认的时区ID有多少,这个准确的数字可以从ZoneId.getAvailableZoneIds()这个方法类获取。

        我们来执行一下看控制台的输出结果。一共的时区id有599个,大致的信息如下图所示:

        为了更方便的根据zoneId来获得时区信息,这里封装一个基本的方法,输入参数是时区信息和当前时间,然后计算对应时区下的时间,采用日期格式化的形式进行输出。

// 创建一个日期时间格式化器
private static final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");public static String getTimeFormart(String zoneIdStr,long currentTimeMillis) {ZoneId zoneId = StringUtils.isNotEmpty(zoneIdStr) ?  ZoneId.of(zoneIdStr) : ZoneId.systemDefault();// 将时间戳转换为Instant对象Instant instant = Instant.ofEpochMilli(currentTimeMillis);// 将Instant转换为ZonedDateTimeZonedDateTime zonedDateTime = instant.atZone(zoneId);// 格式化日期时间String formattedDateTime = zonedDateTime.format(formatter);// 输出格式化后的日期时间//System.out.println(formattedDateTime);return formattedDateTime;
}

 以上就是已知了时区ID来直接获取时间的示例。那么在一些场景中,比如已知一个经纬度信息,如何根据经度来自动计算时区的ID。这就需要一定的计算了。在下面的内容中进行深入介绍。

三、Java通过经纬度获取时区

        全球共分为24个时区。 这一划分是基于地球自转,每隔经度15°为一个时区,以格林尼治天文台旧址为中时区(零时区),设东1至12区、西1至12区,每个时区跨经度15度,最后的东、西12区各跨7.5度,以180度经线为界。每个时区的中央经线上的时间就是这个时区内统一采用的时间,称为区时,相邻两时区的时差为1小时。那么根据经度,其实我们就可以计算出相应的时区,然后求解出对应的时间。因此本小节将重点讲述如何使用Java来通过经度来获取时区信息。

1、通过经度求解偏移

        为了求解经度对应的时区信息,首先我们来计算经度对应的偏移。方法就是上面讲过的,将经度值与15进行取余。关键代码如下:

/**
* - 根据位置精度获得时区id
* @param currentLon
* @return
*/
public static int calculateTimeZone(double currentLon) {int timeZone;int shangValue = (int) (currentLon / 15);double yushuValue = Math.abs(currentLon % 15);if (yushuValue <= 7.5) {timeZone = shangValue;} else {timeZone = shangValue + (currentLon > 0 ? 1 : -1);}return timeZone;
}

2、通过偏移量计算时间

        经过上面的步骤,可以计算出目标的经度的偏差,因此可以得出一个偏移。比如7标识在UTC+7区。在Java当中也是可以直接基于UTC+7来直接生成时间。转换的关键代码如下:

List<Double> lonArray = new ArrayList<Double>();
lonArray.add(103.343005D);
lonArray.add(-57.840003D);
lonArray.add(36.116677D);
lonArray.add(9.516670D);
lonArray.add(179.216647D);
lonArray.add(-61.387013D);
lonArray.add(-6.836408D);
for(Double lon : lonArray) {int timeZoneOffset  = calculateTimeZone(lon);String zongIdStr = "UTC" + (timeZoneOffset < 0 ? "-" : "+") + Math.abs(timeZoneOffset);System.out.println(zongIdStr + "\t==>"+getTimeFormart(zongIdStr,currentTimeMillis));}

        与之前的zoneId不一样的是,这里传入的UTC的偏移信息。然后求解时间,来看程序的实际输出。

        可以看到数据已经成功的进行了输出。而且加上了偏移。

3、统一的处理算法

         为了兼容zoneId和通过经度位置来求解目标的时区信息的需求,这里我们封装一种处理算法。其大致的运行逻辑如下图所示:

        以我们的全球城市为例,如果想要计算其时间信息,首先查询当前对象是否包含了zoneId,如果有,则获取IANA代码后直接计算时间。如果没有,则获取对象空间属性的经度参与计算,如果经度获取失败,则返回空值。 这里分享这种计算方法,以后如果再碰到这种需要通过经度来生成时间的场景,可以采用本文分享的方法。

四、总结

        以上就是本文的主要内容,文章首先介绍了一些IANA时区的相关知识,然后重点介绍在Java中如何进行时区的时间转换,同时还分别介绍基于IANA的时区加载和基于UTC的时区加载,通过实例的方式让大家掌握如何来进行时间的计算。希望通过实例的讲解,大家不仅掌握如何通过zoneID来获取时间信息,也可以支持根据经度来获取位置的时区计算过程。为以后的时空分析奠定坚实的基础。行文仓促,定有许多不足之处,如有不足,在此恳请各位专家博主在评论区批评指正,不胜感激。

        本文在编写过程中,参考了许多的资料,站在巨人的肩膀上才能看得更远。如下所示:

1、世界时区信息。

2、IANA Time Zone Database (简称tzdata) 时区数据。

3、IANA Time Zone Database 和 ZONEINFO 详解。

相关文章:

基于Java的世界时区自动计算及时间生成方法

目录 前言 一、zoneinfo简介 1、zoneinfo是什么 2、zoneinfo有什么 二、在Java中进行时区转换 1、Java与zoneInfo 2、Java展示zoneInfo实例 3、Java获取时区ID 三、Java通过经纬度获取时区 1、通过经度求解偏移 2、通过偏移量计算时间 3、统一的处理算法 四、总结 …...

Excel + Notepad + CMD 命令行批量修改文件名

注意&#xff1a;该方式为直接修改原文件的文件名&#xff0c;不会生成新文件 新建Excel文件 A列&#xff1a;固定为 renB列&#xff1a;原文件名称C列&#xff1a;修改后保存的名称B列、C列&#xff0c;需要带文件后缀&#xff0c;为txt文件就是.txt结尾&#xff0c;为png图片…...

OpenGL 几何着色器高级应用

几何着色器高级应用 概念回顾 几何着色器(Geometry Shader)是 OpenGL 管线中的可选着色器阶段,位于顶点着色器(Vertex Shader) 和光栅化阶段 之间。 其核心功能是基于输入的图元(如点、线或三角形),生成新的图元,或对输入的图元进行修改。 几何着色器的执行是以图元…...

【Unity基础】Unity 2D实现拖拽功能的10种方法

方法1. 基于 Update 循环的拖拽方法 (DragDrop2D) 代码概述 using System.Collections; using System.Collections.Generic; using UnityEngine;public class DragDrop2D : MonoBehaviour {bool isDraggable;bool isDragging;Collider2D objectCollider;void Start(){objectC…...

duxapp中兼容多端的 BoxShadow 阴影组件

由于RN 安卓端对阴影的支持不太完善&#xff0c;使用这个组件可以实现阴影效果 在RN端是使用 react-native-fast-shadow 实现的 示例 import { BoxShadow, Text } from /duxui<BoxShadow><Text>这是内容</Text> </BoxShadow>Props 继承自Taro的View…...

服务器---centos上安装docker并使用docker配置jenkins

要在 Docker 中安装 Jenkins 并进行管理,可以按照以下步骤操作: 1. 安装 Docker 首先,确保你的系统已经安装了 Docker。如果尚未安装,可以使用以下命令进行安装: 在 CentOS 上安装 Docker sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://…...

Linux系统操作03|chmod、vim

上文&#xff1a; Linux系统操作02|基本命令-CSDN博客 目录 六、chmod&#xff1a;给文件设置权限 1、字母法 2、数字法&#xff08;用的最多&#xff09; 七、vim&#xff1a;代码编写和文本编辑 1、启动和退出 1️⃣启动 2️⃣退出 2、vim基本操作 六、chmod&#x…...

数据库同步中间件DBSyncer安装配置及使用

1、介绍 DBSyncer&#xff08;英[dbsɪŋkɜː]&#xff0c;美[dbsɪŋkɜː 简称dbs&#xff09;是一款开源的数据同步中间件&#xff0c;提供MySQL、Oracle、SqlServer、PostgreSQL、Elasticsearch(ES)、Kafka、File、SQL等同步场景。支持上传插件自定义同步转换业务&#xf…...

虚幻5描边轮廓材质

很多游戏内都有这种描边效果&#xff0c;挺实用也挺好看的&#xff0c;简单复刻一下 效果演示&#xff1a; Linethickness可以控制轮廓线条的粗细 这样连完&#xff0c;然后放到网格体细节的覆层材质上即可 可以自己更改粗细大小和颜色...

ISP帳戶會記錄什麼資訊?

許多用戶並不知道ISP會記錄有關線上活動的大量資訊。從流覽歷史記錄到數據使用情況&#xff0c;ISP經常收集和保留用戶數據&#xff0c;引發一系列隱私問題。 ISP 記錄哪些數據&#xff1f; ISP可以根據其隱私政策記錄各種類型的資訊。常見的記錄數據包括&#xff1a; 1.流覽…...

Facebook如何避免因IP变动而封号?实用指南

随着Facebook在个人社交与商业推广中的广泛应用&#xff0c;越来越多的用户面临因“IP变动”而被封号的问题。尤其是跨境电商、广告运营者和多账号管理用户&#xff0c;这种情况可能严重影响正常使用和业务发展。那么&#xff0c;如何避免因IP变动导致的封号问题&#xff1f;本…...

EXCEL数据清洗的几个功能总结备忘

目录 0 参考教材 1 用EXCEL进行数据清洗的几个功能 2 删除重复值&#xff1a; 3 找到缺失值等 4 大小写转换 5 类型转化 6 识别空格 0 参考教材 精通EXCEL数据统计与分析&#xff0c;中国&#xff0c;李宗璋用EXCEL学统计学&#xff0c;日EXCEL统计分析与决策&#x…...

web网页连接MQTT,显示数据与下发控制命令

web网页连接MQTT&#xff0c;显示数据与下发控制命令 零、前言 在完成一些设备作品后&#xff0c;常常会因为没有一个上位机用来实时检测数据和下发命令而苦恼&#xff0c;在上一篇文章中提到了怎么白嫖阿里云服务器&#xff0c;并且在上面搭建了属于自己的web网站。那么现在…...

数据结构day3作业

一、完整功能【顺序表】的创建 【seqList.h】 #ifndef __SEQLIST_H__ #define __SEQLIST_H__#include <stdio.h> #include <string.h> #include <stdlib.h>//宏定义&#xff0c;线性表的最大容量 #define MAX 30//类型重定义&#xff0c;表示要存放数据的类…...

Android SDK 平台工具版本说明

Android SDK Platform-Tools 是 Android SDK 的一个组件。它包含与 Android 平台进行交互的工具&#xff0c;主要是 adb 和 fastboot。虽然 adb 是 Android 应用开发所必需的&#xff0c;但应用开发者通常仅使用 Studio 安装的副本。如果您想直接从命令行使用 adb 并且未安装 S…...

Sharding-jdbc基本使用步骤以及执行原理剖析

一、基本使用步骤 1、需求说明 使用sharding-jdbc完成对订单表的水平分表&#xff0c;通过快速入门的开发&#xff0c;了解sharding-jdbc使用方法 人工创建两张表&#xff0c;t_order_1和t_order_2&#xff0c;这两张表是订单表拆分后的表&#xff0c;通过sharding-jdbc向订…...

mysql重置root密码(适用于5.7和8.0)

今天出一期重置mysql root密码的教程&#xff0c;适用于5.7和8.0&#xff0c;在网上搜索了很多的教程发现都没有效果&#xff0c;浪费了很多时间&#xff0c;尝试了多次之后发现这种方式是最稳妥的&#xff0c;那么废话不多说&#xff0c;往下看&#xff1a; 目录 第一步&…...

Linux下SVN客户端保存账号密码

参考文章&#xff1a;解决&#xff1a;Linux上SVN 1.12版本以上无法直接存储明文密码_linux svn 保存密码-CSDN博客新版本svn使用gpg-agent存储密码-CSDN博客svn之无法让 SVN 存储密码&#xff0c;即使配置设置为允许_编程设计_ITGUEST 方法一&#xff1a;明文方式保存密码 首…...

centos7.9 gcc升级到11.2.1

一、信息查看 # cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core) # gcc --version gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44) Copyright © 2015 Free Software Foundation, Inc. 本程序是自由软件&#xff1b;请参看源代码的版权声明。本软件没有任…...

HQChart使用教程30-K线图如何对接第3方数据42-DRAWTEXTREL,DRAWTEXTABS数据结构

HQChart使用教程30-K线图如何对接第3方数据42-DRAWTEXTREL,DRAWTEXTABS数据结构 效果图DRAWTEXTREL示例数据结构说明nametypecolorDrawVAlignDrawAlignDrawDrawTypeDrawDataFont DRAWTEXTABS示例数据结构说明nametypecolorDrawVAlignDrawAlignDrawDrawTypeDrawDataFont 效果图 …...

测试微信模版消息推送

进入“开发接口管理”--“公众平台测试账号”&#xff0c;无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息&#xff1a; 关注测试号&#xff1a;扫二维码关注测试号。 发送模版消息&#xff1a; import requests da…...

反向工程与模型迁移:打造未来商品详情API的可持续创新体系

在电商行业蓬勃发展的当下&#xff0c;商品详情API作为连接电商平台与开发者、商家及用户的关键纽带&#xff0c;其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息&#xff08;如名称、价格、库存等&#xff09;的获取与展示&#xff0c;已难以满足市场对个性化、智能…...

SciencePlots——绘制论文中的图片

文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了&#xff1a;一行…...

django filter 统计数量 按属性去重

在Django中&#xff0c;如果你想要根据某个属性对查询集进行去重并统计数量&#xff0c;你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求&#xff1a; 方法1&#xff1a;使用annotate()和Count 假设你有一个模型Item&#xff0c;并且你想…...

高等数学(下)题型笔记(八)空间解析几何与向量代数

目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...

如何为服务器生成TLS证书

TLS&#xff08;Transport Layer Security&#xff09;证书是确保网络通信安全的重要手段&#xff0c;它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书&#xff0c;可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

React---day11

14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store&#xff1a; 我们在使用异步的时候理应是要使用中间件的&#xff0c;但是configureStore 已经自动集成了 redux-thunk&#xff0c;注意action里面要返回函数 import { configureS…...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer &#xff08;1&#xff09;资源 论文&a…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...