基本上我有一次
currentTime = DateFormat.getTimeInstance().format(new Date());
Run Code Online (Sandbox Code Playgroud)
我想计算自currentTime以来已过去多少时间.有任何想法吗?
我想实现一个时间计数器(从0开始计数),基本上得到保存时间变量(开始时间,这是因为一旦用户点击一个按钮,创建)和减去当前时间(Calendar.getInstance()可能?这样结果就是两次之间的差异(HH:MM:SS).这个方法将在计时器的每个刻度上运行,以便文本视图每秒更新一次,有效地创建我的计时器.
现在,我采用这条迂回路线,因为这是我能够找到的唯一方法,即使应用程序被杀,也可以节省时间.这是因为startTime变量在创建后立即保存到SharedPreferences,并且在每个Tick中,系统只需找到startTime和当前时间之间的差异即可在现场计算我的计时器.
现在,我已经尝试将我的startTime作为Calendar变量并初始化为:
Calendar startTime = Calendar.getInstance();
Run Code Online (Sandbox Code Playgroud)
然后
elapsedTime = startTime - Calendar.getInstance();
Run Code Online (Sandbox Code Playgroud)
但显然,这不起作用.
在一个用C#编写的类似项目中,我能够使用它,虽然使用了DateTime变量......在Android中有这样的方法吗?
如果这太复杂了,是否有更好的方法来保存我的天文台计步器进度?
谢谢,麻烦您了!
我想制作日历视图以支持触摸交互.所以我想构建新的自定义日历视图.我试图在视图偏移和实际日期值之间建立映射函数.
这是我的想法:如果我可以计算自基准日期以来的周数(在我的情况下,1989-12-31),很容易知道偏移量.HEIGHT_FOR_WEEK*NUM_OF_WEEK是非常简单的计算,可以知道精确的偏移量.
我的问题是:首先我从基准日期获得毫秒值.我将毫秒设置为另一个日历对象.我期望该对象的日期相同.但实际上它是不同的日期.
mBaseDateInMillis = mBaseDate.getTimeInMillis();
mAnotherDate.setTimeInMillis(mBaseDateInMillis);
/* I expect mBaseDate == mAnotherDate.
* but it was different.
*/
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
public class CalendarCoordinate {
public static final long ONEWEEK_IN_MILLISECONDS = 60 * 60 * 24 * 7 * 1000;
public Calendar mBaseDate = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
public long mBaseDateInMillis = 0;
public Calendar mDate = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
public int mWeekHeight = 30;
/**
* CTOR
*/
public CalendarCoordinate() {
/* Base date is 1989-12-31 0, 0, 0
* It was Sunday …Run Code Online (Sandbox Code Playgroud)