Android平台关于时间和日期的相关类和方法(Date/Time)

JavaScript Date对象深度解析:UTC时间轴与时区陷阱 JavaScript中的Date并非日历工具,而是一个基于UTC时间轴的毫秒级时间戳封装。其核心原理是内部仅存储自1970-01-01T00:00:00Z起的毫秒数,所有getXXX方法均为该绝对时刻在不同时区坐标系下的投影。这种设计带来高性能与轻量性,但也导致字符串解析歧义、时区隐式转换、timestamp单位混淆(毫秒/秒)等高频故障。技术价值在于统一时间语义、支撑全球化应用与跨系统协同;典型应用场景包括多时区日程管理、前后端时间数据交换、ECharts等可视化库的时间轴渲染,以及排查java.text 阅读详情

1. Time类,这个类可以得到具体的日期/时间以及时区,可以在日期/时间格式与字符串及毫秒之间转换。

(据说,使用Time类对CPU的负荷较小,不过我没有与其他的类型对比过)

Time t = new Time(); //得到的是初始日期时间:19700101T000000Asia/Shanghai(0,0,0,-1,-28800)

//Time t=new Time("GMT+8"); 加上Time Zone资料

t.setToNow(); //获取当前日期时间:20140103T153540Asia/Shanghai(5,2,28800,0,1388734540)

String str = t.format("%Y%m%dT%H%M%S"); //20140103T155737

//等同于 t.format2445()方法。

解析一个日期/时间格式的字符串:

t.parse("20101010T151133");

str = t.format2445(); //20101010T121133

如果是一个非此格式的字符串,结果会抛出异常TimeFormatException

t.parse("20101010151133"); //异常

t.parse("aaa201010ddT10151133ddd");//异常

t.parse("20101010"); //只有日期是正常的

timeStr = t.format2445(); //20101010

获取Time的各个域值:

int year = t.year; //2010

int month = t.month; //9 (0-11)此处值得注意

int date = t.monthDay; //10

int hour = t.hour; // 15, 24小时制(0-23)

int minute = t.minute; //11

int second = t.second; //33

2. Calendar类

DateFormat.format(dateFormat, calendar)方法,一般使用的格式是yyyy MM dd hh mm ss,在这个方法里,时间显示的是12小时制的,如果需要显示24小时制的,把hh换成kk即可。

String out = DateFormat.format("MM-dd hh:mm:ss", Calendar.getInstance().getTime()).toString(); //01-04 11:23:56

out = DateFormat.format("YY-MM-DD hh:mm:ss", Calendar.getInstance().getTime()).toString(); //YY-01-DD 11:25:48 (不正确的参数)

out = DateFormat.format("YYYY-M-D hh:mm:ss", Calendar.getInstance().getTime()).toString(); //YYYY-1-D 11:26:21 (不正确的参数)

out = DateFormat.format("yy-MM-dd hh:mm:ss", Calendar.getInstance().getTime()).toString(); // 14-01-04 11:59:12

out = DateFormat.format("yyyy-M-d hh:mm:ss", Calendar.getInstance().getTime()).toString(); //2014-1-4 03:02:53

out = DateFormat.format("yyyy-M-d kk:mm:ss", Calendar.getInstance().getTime()).toString(); //2014-1-4 15:03:19

获取Calendar的各个域值:

int year = Calendar.getInstance().get(Calendar.YEAR);

int month = Calendar.getInstance().get(Calendar.MONTH) + 1;

int day = Calendar.getInstance().get(Calendar.DAY_OF_MONTH);

int hour = Calendar.getInstance().get(Calendar.HOUR_OF_DAY);

int minute = Calendar.getInstance().get(Calendar.MINUTE);

int second = Calendar.getInstance().get(Calendar.SECOND);

out = String.format("%04d-%02d-%02d", year, month, day); //2014-01-04

out = String.format("%02d:%02d:%02d", hour, minute, second); //11:27:13

获取本地格式的日期时间:

out = Calendar.getInstance().getTime().toLocaleString(); //2014-1-4 下午3:04:05

获取系统当前时间的毫秒数:

long currentStamp = Calendar.getInstance().getTimeInMillis(); //1388806099388

t.set(time);

timeStr = t.format2445(); //20140104T112350

3. 其他方法:

获取开机以来非睡眠状态持续的毫秒数:(milliseconds of non-sleep uptime since boot.)

long when = SystemClock.uptimeMillis();

比较适合用来检测某一操作或方法执行的时间差,如:

Log.v("test running time", "This method costs time:" + (SystemClock.uptimeMillis() - when) + "ms");

获取系统当前时间的毫秒数,同Time.setToNow()方法。

long time=System.currentTimeMillis(); //1388803748818

t.set(time);

timeStr = t.format2445(); //20140104T104908

Android系统2038年问题:从时间戳溢出到内核驱动的全链路解析 Unix时间戳是计算机系统中记录时间的基础方式,它表示自1970年1月1日以来的秒数。其原理在于使用一个整数来存储这一跨度,在32位系统中,该整数为有符号32位,最大值为2^31-1秒,这导致了著名的2038年问题——当时间到达2038年1月19日03:14:07 UTC后,数值溢出将引发时间计算错误。这一问题的技术价值在于,它揭示了系统底层时间处理机制的长期兼容性风险,直接影响需要长期稳定运行的嵌入式设备和物联网系统。在应用场景上,任何依赖系统时间进行调度、证书验证和日志记录的服务都可能受到影响,例如An 阅读详情

相关推荐

Cursor插件安装CodeX保姆级教程:从登录到调整面板布局,一步不落

本文提供Cursor编辑器安装CodeX插件的详细教程,涵盖从登录到调整面板布局的全流程。通过优化界面布局和配置参数,帮助开发者提升编码效率,特别适合需要智能代码补全的编程场景。

weixin_42648844的博客 4759

Android时间工具类

时间在软件开发中是一个常见的处理需求,包括获取当前时间、时间格式化、时间比较、时间差计算等操作。为了简化开发过程,可以编写一个时间工具类来封装这些常用的时间操作方法。

小北的博客 833

解决Docker拉取镜像报错:Get https://registry-1.docker.io/v2/: 报错

解决Docker拉取镜像报错: Get “https://registry-1.docker.io/v2/”: net/http: request canceled while waiting for connection问题描述Get "https://registry-1.docker.io/v2/"是docker官方的镜像源,下载很慢的,一般会自己指定国内映射的加速镜像源。

qq_33650333的博客 4173

Android 时间工具类

4、获取当前对应格式的日期 默认"yyyyMMddHHmmssSSS"1、日期转换为字符串 默认"yyyy-MM-dd HH:mm:ss"6、获取星期几,java中一周中的数字 转 常规一周中的数字。11、获取某月 所有日期(yyyy-mm-dd格式字符串)13、获取某周 所有日期(yyyy-mm-dd格式字符串)14、 计算两个日期之间相差的秒数。15、计算两个日期之间相差的天数。8、获取一个月的开始和结束时间。12、获取一周的开始和结束时间。9、获取一年的开始和结束时间。3、获取当前对应格式的日期。

ZM_Crazy的专栏 1205

基于STM32与HRTIM的四开关Buck-Boost双向DC-DC电源设计实战(附源码、仿真与设计解析)

本文详细介绍了基于STM32F334的HRTIM高分辨率定时器实现四开关Buck-Boost双向DC-DC电源的设计实战。通过精准的PWM控制、双环PID算法和智能模式切换逻辑,解决了电压震荡与效率优化等关键问题,并提供了完整的源码、PSIM仿真及参数计算,为高性能电源设计提供了实用参考。

7z8x2c4v6b9的博客 299

DS250DF410寄存器配置实战:从原理到调试的高速SerDes信号优化指南

在高速串行通信领域,SerDes(串行器/解串器)技术是实现芯片间高速数据传输的核心。其工作原理是通过时钟数据恢复(CDR)从串行数据流中提取时钟,并利用均衡技术补偿信道损耗。这项技术的核心价值在于突破PCB走线或电缆的带宽限制,确保在25Gbps及以上速率下数据的可靠传输。其应用场景广泛覆盖数据中心、高性能计算和通信设备中的高速背板、光模块及芯片互连。本文以TI的DS250DF410多通道重定时器为例,深入剖析其寄存器配置,特别是如何通过精细调控其自适应均衡器和眼图监测模块,实现对高速链路的信号整形与质量

aodiyi6351的博客 386

android 时间的类型,Android中时间日期类使用总结(Calendar和Date)

时间和日期处理,在一个应用中都是很重要的,掌握时间和日期类的处理也是很重要的。Java中的Calendar类和Date类,在java.util包下。在JDK1.0中,Date类是唯一处理时间的类,但是由于Date类中方法比较少并且有一些方法不便于实现国际化,所以从JDK1.1版本开始新增了Calendar类,增加了许多功能强大的方法,推荐使用 Calendar类进行时间和日期处理。下面开始总结Da...

weixin_33325305的博客 2226

语义分割系列7-Attention Unet(pytorch实现)

本文介绍了AttentionUnet模型和其主要中心思想,并在pytorch框架上构建了Attention Unet模型,构建了Attention gate模块,在数据集Camvid上进行复现。

yumaomi的博客 2万+

android年月日时分秒格式,Android 用Time和Calendar获取系统当前时间源码分享(年月日时分秒周几)...

概述用Time和Calendar获取系统当前时间(年月日时分秒周几)效果图源码:import android.app.Activity;import android.os.Bundle;import android.text.format.Time;import android.view.View;import android.widget.RelativeLayout;import androi...

weixin_42533622的博客 331

锂电池SOH预测 | 基于BP神经网络的锂电池SOH预测(附matlab完整源码)

锂电池SOH预测 | 基于BP神经网络的锂电池SOH预测(附matlab完整源码)

天天酷科研的博客 1114

一条时间轴上的商品供给:商品供给域事件全景、八大子域事件清单与事件契约规范的工程推演

本文以虚构连锁零售企业“青禾鲜市”为例,用事件风暴重新梳理商品供给域:先剖析同词异义、状态模糊、隐式依赖与被动兜底四类冲突,再以时间轴、八条子域泳道与关键事件铺出全景地图,确立一个事件只有一个户口;随后为总店商品、门店商品、价格、库存、质量、标签、变更通知与操作日志列出聚合、事件、命令与策略,并统一命名、信封结构、版本与幂等规范。程序体检把初稿14个问题清零,仿真显示按聚合版本号更新可售视图可将误判从两位数百分比降到0.019%。文末给出四轮工作坊节奏与新品引入、全国调价、批次召回走查剧本。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 5万+

compose_multiplatform_date_time_picker:一款跨平台日期时间选择库

compose_multiplatform_date_time_picker:一款跨平台日期时间选择库 在现代应用开发中,日期和时间的选取是用户交互的重要部分。为了在不同平台(Android、iOS 和桌面应用)上提供流畅且一致的用户体验,选择一个合适的日期时间选择库至关重要。今天,我们要推荐的这款开源库——compose_multiplatform_date_time_picker,正是为此而生...

gitblog_00544的博客 463

Qt实现窗口自适应分辨率大小

如果希望窗口大小始终保持与屏幕分辨率一致,可以将上述代码放在窗口的resizeEvent()函数中。这样,每当窗口大小发生变化时,都会自动调用resizeEvent()函数,从而实现窗口大小的自适应调整。在Qt中,可以通过一些简单的方法实现窗口大小随分辨率变化而自适应调整。获取到当前屏幕的分辨率后,可以根据需要调整窗口的大小。无论在何种分辨率下运行应用程序,窗口都能够正确地自动调整大小,提供更好的用户体验。除了调整窗口大小,还可以考虑将窗口设置为最大化,以充分利用屏幕空间。步骤2:调整窗口大小。

FuJavascript的博客 3655

Date & Time组件(上)

Android开发中的Date & Time组件主要包括DatePicker、TimePicker及其对话框版本,用于选择日期和时间。DatePicker支持年和月日选择,可通过XML或代码设置属性;DatePickerDialog以对话框形式提供日期选择功能。TimePicker用于选择小时和分钟,可设置24小时制;其对话框版本TimePickerDialog提供更灵活的交互方式。开发者可以通过Material Design组件实现更现代的UI设计。这些组件广泛用于需要日期时间选择的场景,如日历、

m0_57545130的博客 813

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

android java标准时间_Android 时间 日期 相关

一、概念参考时间标准总结 IAT、UT、UTC、GMT、夏令时1.格林尼治标准时间:Greenwich Mean Time(简称 GMT)GMT 以格林尼治天文台经线为 0 度经线,将世界分为 24 个时区,向东时间快,向西时间慢。UTC是基于标准的GMT提供的准确时间。(在计算机中 GMT 时间和 UTC 时间是一样的)2.夏令时与冬令时 Daylight Saving Time(简称 DST)...

weixin_42500642的博客 441

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

如何使用MaterialDateTimePicker实现高级日期时间选择功能:可选择性时间、禁用日期与高亮日期全指南

MaterialDateTimePicker是一款专为Android平台设计的优雅日期时间选择组件,它不仅提供了符合Material Design规范的视觉体验,还内置了丰富的高级功能。本文将详细介绍如何利用其强大的API实现可选择性时间、禁用特定日期和高亮重要日期等实用功能,帮助开发者打造更加友好和个性化的用户交互界面。 ## 快速开始:引入MaterialDateTimePicker到项目

gitblog_00008的博客 397

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Android中关于日期时间与时区的使用总结

在开发Android的过程中,出现过几次由于日期时间导致的问题,而且主要是由于时区的原因导致,所以一直想总结一下,形成一个良好的开发规范。   一、Unix时间戳     Unix时间戳(Unix timestamp),或称Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方法,定义为从格林威治时间1970年01月01日00时00分0

lijie815917的专栏 535

Date & Time组件(下)

Android时间与日期组件详解 本文介绍了Android开发中常用的时间与日期组件,包括TimePicker、TimePickerDialog以及Material Design组件。TimePicker提供时间选择功能,支持24/12小时制;TimePickerDialog以弹窗形式呈现时间选择器;MaterialTimePicker和MaterialDatePicker则提供更现代化的交互体验。文章还展示了如何组合使用日期和时间选择器,以及通过Material Components库实现更精美的UI效果

m0_57545130的博客 807

Android系统2038年时间陷阱:从RTC驱动到内核的排查与修复实战

时间戳溢出是计算机系统中一个经典的基础问题,其根源在于早期系统使用32位有符号整数表示自Unix纪元(1970年1月1日)以来的秒数。这一设计导致其最大表示时间为2038年1月19日03:14:07,超过此限将发生符号位溢出,时间跳转至1901年,即著名的“2038年问题”。其技术价值在于保障系统在超长期限下的时间可靠性,对于数字证书有效期、工业控制、离线数据记录等需要处理未来数十年的时间戳场景至关重要。在Android系统中,此问题常潜藏于硬件抽象层(HAL)与RTC(实时时钟)驱动等底层环节,即使应用层

weixin_34268843的博客 502

LinkedIn Gem核心源码探秘:Mash类如何优雅处理LinkedIn API响应数据

LinkedIn Gem是一个功能强大的Ruby封装库,专为LinkedIn API设计,让开发者能够轻松地与LinkedIn平台进行交互。在这篇深入解析中,我们将重点探讨其核心组件——Mash类,这个类是如何优雅地处理LinkedIn API响应数据的。 ## 什么是Mash类?为什么它如此重要? Mash类是LinkedIn Gem中处理API响应的核心数据结构。它继承自Hashie::M

gitblog_00141的博客 934

React Native鸿蒙跨平台医疗健康类的血压记录,HarmonyOS ArkTS API 24,包括收缩压、舒张压、心率、日期、时间、备注和状态

在处理这些问题时,你可能会遇到的最后一个问题是外部服务提供商施加的速率限制。以使用 Google Maps API 为例,在撰写本书时,免费和未经身份验证的请求的官方费率限制为每秒 10 个请求和每天 2,500 个请求。当使用多线程时,很容易耗尽这样的限制。更严重的问题是,因为我们没有覆盖任何故障的场景,而处理多线程 Python 代码中的异常比平常更复杂。当客户端超过 Google 的速率时,api.geocode()函数将抛出异常,这是个好消息。

2301_77888392的博客 943
下一篇: Android 自定义控件——View(学习篇)
LXB-89
博客等级 码龄11年 34粉丝 81原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值