文档章节

Android 日期时间类

CrazyManDF
 CrazyManDF
发布于 2016/06/24 11:12
字数 843
阅读 128
收藏 0

##Android 日期类##

Unix时间戳在计算上最为方便和灵活,效率也高;而Date和Calendar则在一些具体的日期计算上更为便利。
Date和Calendar自动根据手机所设置的时区来调整时间戳的,也就是该时区真实的时间戳
SimpleDateFormat可设置地区和时区,而是获取指定时区的格式化时间
使用TimeZone.getDefault().getRawOffset()方法来得到Calendar和Date的时间差

Date nowDateStr = new Date(); // 默认时区
Calendar calendar = Calendar.getInstance(); //默认时区
Log.d(TAG, "calendar long = " + calendar.getTimeInMillis());
Log.d(TAG, "    date long = " + nowDateStr.getTime());
Log.d(TAG, "calendar date = " + calendar.getTime());
Log.d(TAG, "         date = " + nowDateStr);
	
Calendar在不手动设置时区时,是与系统默认时区相关的。
在手动修改时区后,不能使用calendar.getTime方法来直接获取Date日期,因为此时的日期与setTime时的值相同
想要正确获取修改时区后的时间,应该通过calendar的get方法。

Calendar calendar1 = Calendar.getInstance(TimeZone.getTimeZone("GMT-08:00")); // 指定时区
// 获取的还是默认时区
Log.d(TAG, "calendar1 long = " + calendar1.getTimeInMillis());
Log.d(TAG, "calendar1 date = " + calendar1.getTime());
// 获取的是指定时区
Log.d(TAG, "calendar HOUR_OF_DAY = " + calendar1.get(Calendar.HOUR_OF_DAY));
Log.d(TAG, "calendar MINUTE = " + calendar1.get(Calendar.MINUTE));
Log.d(TAG, "calendar SECOND = " + calendar1.get(Calendar.SECOND));
Log.d(TAG, "calendar MILLISECOND = " + calendar1.get(Calendar.MILLISECOND));

int offset = TimeZone.getDefault().getRawOffset(); // 与标准时间戳(GMT+00:00)差

Calendar类型

1.Calendar 转化 String

//获取当前时间的具体情况,如年,月,日,week,date,分,秒等 
Calendar calendat = Calendar.getInstance(); //默认时区
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String dateStr = sdf.format(calendar.getTime());

2.String 转化Calendar

String str="2010-5-27";
SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");
Date date =sdf.parse(str);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);

3.Calendar转化Date

Calendar calendar = Calendar.getInstance();
java.util.Date date =calendar.getTime();

4.Long 转换成时间

long timeLong = 1468307486765L;  //GMT+08:00保存的 Tue Jul 12 2016 15:11:26
//1、手机默认时区转换
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault()); 
calendar.setTimeInMillis(timeLong);
String parsDateStr = sdf.format(calendar.getTime());
//2、指定时区转换
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault());
sdf.setTimeZone(TimeZone.getTimeZone("GMT+08:00")); // 格式化为指定时区
String parsDateStr = sdf.format(calendar.getTime());

5.Calendar转化Unix时间戳

Calendar calendar = Calendar.getInstance();//获取当前日历对象
long unixTime = calendar.getTimeInMillis();//获取当前时区下日期时间对应的时间戳
long unixTimeGMT = unixTime - TimeZone.getDefault().getRawOffset();//获取标准格林尼治时间下日期时间对应的时间戳

Date类型

1.Date 转化String

SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");
String dateStr=sdf.format(new Date());

2.String 转化Date

String str="2010-5-27";
SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");
Date birthday = sdf.parse(str);

3.Date 转化Calendar

Calendar calendar = Calendar.getInstance();
calendar.setTime(new java.util.Date());

4.Date 转化Unix时间戳

Date date = new Date();//获取当前日期对象
unixTimeGMT = unixTime = date.getTimeInMillis();//获取当前时区下日期时间对应的时间戳

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置格式
String dateString = "2010-12-26 03:36:25";//设定具有指定格式的日期字符串
unixTimeGMT = unixTime = format.format(date);//获取当前时区下日期时间对应的时间戳

获取当前Android的年月日时分秒的时间

Android的文件有建议用Time代替Calendar。用Time对CPU的负荷会较小。(取出时间只有24小时模式)

1)

Time time = new Time("GMT+8"); // 或 Time t=new Time(); 
time.setToNow();   
int year = time.year;   
int month = time.month;   
int day = time.monthDay;   
int minute = time.minute;   
int hour = time.hour;   
int sec = time.second;   

2)
Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
int hour = c.get(Calendar.HOUR_OF_DAY);
int minute = c.get(Calendar.MINUTE);

获取Android系统时间是24小时制还是12小时制

ContentResolver cv = this.getContentResolver();
String strTimeFormat = android.provider.Settings.System.getString(cv,
		android.provider.Settings.System.TIME_12_24);
if(strTimeFormat.equals("24")){
	Log.i("activity","24");
}

参考:http://www.2cto.com/kf/201207/139551.htmlhttp://fjfj910.iteye.com/blog/1202219

© 著作权归作者所有

上一篇: Android测试
CrazyManDF
粉丝 3
博文 81
码字总数 34160
作品 0
程序员
私信 提问
Android中Calendar与Date的区别以及消除时区对日期操作影响的方法

Android中Calendar与Date的区别以及消除时区对日期操作影响的方法 在Android中的日期操作常用的有三种方式,分别是: Date类型 Calendar类型 Unix时间戳 其中,Unix时间戳在计算上最为方便和...

SmilWu
2012/07/08
0
0
Android中各个 Java 包的功能描述

在Android的应用程序开发中,通常使用的是JAVA语言,除了需要熟悉JAVA语言的基础知识之外,还需要了解Android提供的扩展的JAVA功能 在一般的JAVA应用中,如果需用引用基础类库,通常需要使用...

红薯
2009/06/15
808
0
Android.jar文件浅析

Android.jar文件浅析 作为一个Java项目,通常情况下都会引入要用到的工具类,也就是Jar包,在Android开发中,绝大部分开发用的工具包都被封装到一个名叫Android.jar的文件里了。如果我们在E...

lotusve
2012/11/21
0
0
Android中EditText的inputType属性值

android中inputType属性在EditText输入值时启动的虚拟键盘的风格有着重要的作用。这也大大的方便的操作。有时需要虚拟键盘只为字符或只为数字。所以inputType尤为重要。 <EditText android:...

Carl_
2014/12/26
0
0
APICloud开发小技巧分享

在这把用APICLOUD开发APP的一些小技巧分享出来 ========================================================== 1.安卓滑动关闭窗口 2.安卓点击两次退出应用 3.安全保存你的各种key 4.利用本地...

API_Cloud
2016/11/14
451
1

没有更多内容

加载失败,请刷新页面

加载更多

Linux 软链接和硬链接简介

本文主要介绍了Linux系统中的链接文件。 文件系统 在Linux系统中,将文件分为两个部分:用户数据和元数据。 元数据(inode) 元数据即文件的索引节点(inode),用来记录文件的权限(r、w、x...

问题终结者
27分钟前
0
0
RocketMQ的事务投递

RocketMQ的事务投递 这是阿里的分布式事务图: 1、A服务先发送个Half Message给Brock端,消息中携带 B服务 即将要+100元的信息。 2、当A服务知道Half Message发送成功后,那么开始第3步执行本...

春哥大魔王的博客
42分钟前
2
0
Qt编写自定义控件31-面板仪表盘控件

一、前言 在Qt自定义控件中,仪表盘控件是数量最多的,写仪表盘都写到快要吐血,可能是因为各种工业控制领域用的比较多吧,而且仪表盘又是比较生动直观的,这次看到百度的echart中有这个控件...

飞扬青云
48分钟前
3
0
DisplayPort 迎来重大更新,数据带宽性能提高3倍

VESA宣布了他们对DisplayPort接口三年来的第一次重大更新。 与DP 1.4a相比,DisplayPort 2.0提供了三倍于DP 1.4a的数据带宽性能,支持超过8K的分辨率,更高的刷新率和更高分辨率的HDR,以及其...

linuxCool
55分钟前
2
0
《Linux就该这么学》2019年7月20日第八天上课笔记

du命令 du -sh /newFS/ 察看文件/文件夹数据占用量 SWAP 交换分区的设置 磁盘容量配额 RHEL 5/6 usrquota RHEL 7 quota 软硬连接 ln 软 指针指向inode 硬 建立新的inode RAID 0 1 5 1+0...

2lodoss
57分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部