android日期计算
‘壹’ 求安卓可以计算日期,纪念日的软件
我想LZ需要的是 “365日历 ”,这是一款很强大的免费日历软件,支持多个系统平台,各平台之间可以互相同步,主要功能有:日历、日程、待办事项、星座运程、黄道吉日、天气预报等,其中还包括LZ需要的日期计算功能。
请LZ移步到 w w w .365rili . com ,免费下载 Android版 的 365日历(下载和使用均免费,如需在pc版和手机版之间同步数据,需要注册帐号,也是免费的!)
以上是 moden又烧了 在凌晨两点给你的回答!希望能帮到你!
(我再也不喝咖啡啦 55555555555,睡不着啊!!!!)
‘贰’ android 计算两个时间相隔多少天
/* * 输入某年某月某日,判断这一天是这一年的第几天? */
public int getDateDays (String date1, String date2)
{
SimpleDateFormat sdf = new SimpleDateFormat("yyyymmdd");
try {
Date date = sdf.parse(date1);// 通过日期格式的parse()方法将字符串转换成日期 Date dateBegin = sdf.parse(date2);
long betweenTime = date.getTime() - dateBegin.getTime();
betweenTime = betweenTime / 1000 / 60 / 60 / 24;
} catch(Exception e)
{
}
return (int)betweenTime;
}
‘叁’ android计算某一时刻到现在经历了多少天多少分多少秒
你这问题的核心就是计算时间差啊,网上代码很多的。
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try
{
Date d1 = df.parse("2006-05-26 12:00:00");
Date d2 = df.parse("2006-07-02 11:20:00");
//Date d2 = new Date(System.currentTimeMillis());//你也可以获取当前时间
long diff = d1.getTime() - d2.getTime();//这样得到的差值是微秒级别
long days = diff / (1000 * 60 * 60 * 24);
long hours = (diff-days*(1000 * 60 * 60 * 24))/(1000* 60 * 60);
long minutes = (diff-days*(1000 * 60 * 60 * 24)-hours*(1000* 60 * 60))/(1000* 60);
System.out.println(""+days+"天"+hours+"小时"+minutes+"分");
}
catch (Exception e)
{
}
‘肆’ android如何判断输入的年月日是否合法
既然要判断某一天是星期几,你总得知道,某一基准日期是星期几把,我好像没有找到有关于基准日期的代码,你的代码没有注释看起来特费劲!!!
我给你写一个,你参考下,运行过了,么有任何问题!!
又不明白的可以交流下!
我的是以1970年1月1日,作为基准日期,此日是周四
#include <stdio.h>
//计算给定的日期是本年的第几天
int count(int year,int month,int day)
{int i,sum=0,flag=0;
int a[13]=;
for(i=1;i<month;i++)
sum=a[i]+sum;
if(year%400==0||year%100!=0&&year%4==0)
flag=1;
if(flag==1&&month>2) sum++;
sum=sum+day;
return sum;
}
int main()
{
int year,month,day;
int sum=0,i;
int a;
//1970年1月1日是周四。
printf("输入日期:");
scanf("%d%d%d",&year,&month,&day);
for(i=1970;i<year;i++)
{
if(i%400==0||i%100!=0&&i%4==0)
sum=sum+366 ;
else sum=sum+365;
}
sum+=count(year,month,day)-1;
a=sum%7;
switch(a)
{
case 0:printf("%d年%d月%d日是:周四\n",year,month,day);break;
case 1:printf("%d年%d月%d日是:周五\n",year,month,day);break;
case 2:printf("%d年%d月%d日是:周六\n",year,month,day);break;
case 3:printf("%d年%d月%d日是:周日\n",year,month,day);break;
case 4:printf("%d年%d月%d日是:周一\n",year,month,day);break;
case 5:printf("%d年%d月%d日是:周二\n",year,month,day);break;
case 6:printf("%d年%d月%d日是:周三\n",year,month,day);break;
}
return 0;
}
c编程高手团队正在招新,有意者速速行动,一起学习,一起努力!!
‘伍’ android中怎么使timecount自动开始计时
android计时器,时间计算器的实现方法,需要的朋友可以参考一下
需求:默认为"00:00:00",点击开始按钮时清零后开始计时,出现如10:28:34。点击停止的时候停止计时。
问题:使用Calendar
DateFormat的方法,不设置时区获取到的小时是本地时区的(东八区的就是8),设置成GMT标准时区获取到的时间是12小时(12:00:00),设置24小时制无效。
在开始时间加减各种小时都无效,而且计时只能到12小时就自动跳上去了,始终无法出现默认状态00:00:00开始计时的效果。
尝试各种时间设置方法无效后只能自己写一个根据秒数转换时间格式字符串的方法了,经过测试是没问题的,两位数只能显示99小时为最大,如需要更大小时数需要改改方法。
另外小时数也不能无限大,超过long数据类型长度会变成负数的,会出现异常的。
显示效果:
测试类:
复制代码
代码如下:
public class TestTime {
public
static void main(String[] args) {
TestTime tt = new
TestTime();
tt.showTimeCount(99*3600000+75*1000);
}
//时间计数器,最多只能到99小时,如需要更大小时数需要改改方法
public String
showTimeCount(long time) {
System.out.println("time="+time);
if(time >=
360000000){
return "00:00:00";
}
String
timeCount = "";
long hourc = time/3600000;
String hour =
"0" + hourc;
System.out.println("hour="+hour);
hour =
hour.substring(hour.length()-2, hour.length());
System.out.println("hour2="+hour);
long minuec =
(time-hourc*3600000)/(60000);
String minue = "0" +
minuec;
System.out.println("minue="+minue);
minue =
minue.substring(minue.length()-2, minue.length());
System.out.println("minue2="+minue);
long secc =
(time-hourc*3600000-minuec*60000)/1000;
String sec = "0" +
secc;
System.out.println("sec="+sec);
sec =
sec.substring(sec.length()-2, sec.length());
System.out.println("sec2="+sec);
timeCount = hour + ":" + minue +
":" + sec;
System.out.println("timeCount="+timeCount);
return timeCount;
}
}
实际例子:
复制代码
代码如下:
//时间计数器,最多只能到99小时,如需要更大小时数需要改改方法
public String showTimeCount(long time) {
if(time >=
360000000){
return "00:00:00";
}
String
timeCount = "";
long hourc = time/3600000;
String hour =
"0" + hourc;
hour = hour.substring(hour.length()-2,
hour.length());
long minuec =
(time-hourc*3600000)/(60000);
String minue = "0" +
minuec;
minue = minue.substring(minue.length()-2,
minue.length());
long secc =
(time-hourc*3600000-minuec*60000)/1000;
String sec = "0" +
secc;
sec = sec.substring(sec.length()-2, sec.length());
timeCount = hour + ":" + minue + ":" + sec;
return
timeCount;
}
private Handler stepTimeHandler;
private Runnable mTicker;
long startTime = 0;
//开始按钮
class startBtnListener implements OnClickListener {
@Override
public void onClick(View v) {
Button b =
(Button)v;
String buttonText =
b.getText().toString();
if("Start".equalsIgnoreCase(buttonText)){
b.setText("Stop");
// 清零 开始计时
stepTimeTV.setText("00:00:00");
stepTimeHandler = new
Handler();
startTime =
System.currentTimeMillis();
mTicker = new Runnable()
{
public void run() {
String
content = showTimeCount(System.currentTimeMillis() -
startTime);
stepTimeTV.setText(content);
long now =
SystemClock.uptimeMillis();
long next = now + (1000
- now % 1000);
stepTimeHandler.postAtTime(mTicker,
next);
}
};
//启动计时线程,定时更新
mTicker.run();
}else{
b.setText("Start");
//停止计时 Remove
any pending posts of Runnable r that are in the message
queue.
stepTimeHandler.removeCallbacks(mTicker);
}
}
}
用时间格式化的方式测试代码:
复制代码
代码如下:
//开始按钮 通过Calendar时间设置的方式,无法正常显示小时为0
class startBtnListener implements OnClickListener {
@Override
public void onClick(View v) {
Button b =
(Button)v;
String buttonText =
b.getText().toString();
if("Start".equalsIgnoreCase(buttonText)){
b.setText("Stop");
// 清零 开始计时
stepTimeTV.setText("00:00:00");
if (mCalendar == null)
{
mCalendar =
Calendar.getInstance();
TimeZone tz =
TimeZone.getTimeZone("GMT");//GMT+8
mCalendar.setTimeZone(tz);
mCalendar.get(Calendar.HOUR_OF_DAY);//24小时制
}
stepTimeHandler = new Handler();
//System.uptimeMillis()
//记录从机器启动后到现在的毫秒数,当系统进入深度睡眠时,此计时器将会停止
//System.currentTimeMillis()
//返回自1970年1月1日到现在的毫秒数,通常用来设置日期和时间
//System.elapsedRealtime()
//返回从机器启动后到现在的毫秒数,包括系统深度睡眠的时间,api里没有这个方法
//直接取得的是当地时区时间,当地时间跟时区有关,设置GMT后始终多12小时
startTime =
System.currentTimeMillis();//12*3600000 - 36*3600000减掉或者加上12小时都不行
mTicker = new Runnable() {
public
void run() {
//这个减出来的日期是1970年的 时间格式不能出现00:00:00
12:00:00
long showTime = System.currentTimeMillis()
- startTime;
Log.i(TAG,showTime+"");
mCalendar.setTimeInMillis(showTime + 13*3600000 +
1000);
String content = (String)
DateFormat.format(mFormat, mCalendar);
stepTimeTV.setText(content);
long now =
SystemClock.uptimeMillis();
long next = now + (1000
- now % 1000);
stepTimeHandler.postAtTime(mTicker,
next);
}
};
//启动计时线程,定时更新
mTicker.run();
}else{
b.setText("Start");
//停止计时 Remove
any pending posts of Runnable r that are in the message
queue.
stepTimeHandler.removeCallbacks(mTicker);
}
}
}
private Handler stepTimeHandler;
Calendar
mCalendar;
String mFormat = "yyyy-MM-dd hh:mm:ss";//yyyy-MM-dd
long startTime = 0;
private Runnable mTicker;
‘陆’ android有获取当前星期几的系统方法吗还是得自己写一个根据年月日计算星期几的详细方法,谢谢
**
* 判断当前日期是星期几
*
* @param pTime 设置的需要判断的时间 //格式如2012-09-08
*
* @return dayForWeek 判断结果
* @Exception 发生异常
*/
// String pTime = "2012-03-12";
private String getWeek(String pTime) {
String Week = "";
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
try {
c.setTime(format.parse(pTime));
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (c.get(Calendar.DAY_OF_WEEK) == 1) {
Week += "天";
}
if (c.get(Calendar.DAY_OF_WEEK) == 2) {
Week += "一";
}
if (c.get(Calendar.DAY_OF_WEEK) == 3) {
Week += "二";
}
if (c.get(Calendar.DAY_OF_WEEK) == 4) {
Week += "三";
}
if (c.get(Calendar.DAY_OF_WEEK) == 5) {
Week += "四";
}
if (c.get(Calendar.DAY_OF_WEEK) == 6) {
Week += "五";
}
if (c.get(Calendar.DAY_OF_WEEK) == 7) {
Week += "六";
}
return Week;
}
‘柒’ android计算一年每月的天数.
Android 获取2个日期相差天数
最近一直需要用到日期处理。
返回2个日期的相差天数。
/**
* 获取两个日期之间的间隔天数
* @return
*/
public static int getGapCount(Date startDate, Date endDate) {
Calendar fromCalendar = Calendar.getInstance();
fromCalendar.setTime(startDate);
fromCalendar.set(Calendar.HOUR_OF_DAY, 0);
fromCalendar.set(Calendar.MINUTE, 0);
fromCalendar.set(Calendar.SECOND, 0);
fromCalendar.set(Calendar.MILLISECOND, 0);
Calendar toCalendar = Calendar.getInstance();
toCalendar.setTime(endDate);
toCalendar.set(Calendar.HOUR_OF_DAY, 0);
toCalendar.set(Calendar.MINUTE, 0);
toCalendar.set(Calendar.SECOND, 0);
toCalendar.set(Calendar.MILLISECOND, 0);
return (int) ((toCalendar.getTime().getTime() - fromCalendar.getTime().getTime()) / (1000 * 60 * 60 * 24));
}
//测试
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date_start = null;
Date date_end = null;
try {
date_start = sdf.parse("2013-10-16");
date_end = sdf.parse("2013-10-19");
} catch (java.text.ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(getGapCount(date_start,date_end));