2013-11-26 74 views
0

我有一个配置文件,我从哪里阅读星期几和一天24小时格式的时间。样品进入如下:获取一个星期几和时间的日期实例

NextRun=Sunday|15:00:00 

我将解析出来到daytime变量。但是,我想找到下一个星期日下午3点的等效毫秒时间戳。例如,如果今天是星期日下午4:00或星期二凌晨1:00,则将是下个星期日下午3:00,但如果是星期日下午2:30,则预计时间将从现在起30分钟。

+2

我想你会想看看JodaTime和时间差API,为[示例](http://stackoverflow.com/questions/18119665/geting-duration-of-2-times/18120233# 18120233),[示例](http://stackoverflow.com/questions/18974729/how-to-get-the-time-since-midnight-in-seconds/18975189#18975189)和[示例](http:// stackoverflow.com/questions/12851934/how-to-find-difference-between-two-joda-datetime-in-minutes/12852021#12852021) – MadProgrammer

+0

这是在客户端的网络,所以我不能不幸地使用这个API。 –

+0

@Sayak Joda-Time是一个本地库,一个.jar文件,作为你的应用程序的一部分安装。不是一个网络服务等,所以没有涉及网络。 –

回答

1

获取日历实例并将其设置为解析时间和日期。如果已过,请添加一周。

Calendar c = Calendar.getInstance(); 
c.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY); 
c.set(Calendar.HOUR_OF_DAY, 15); 
c.set(Calendar.MINUTE, 0); 
c.set(Calendar.SECOND, 0); 
c.set(Calendar.MILLISECOND, 0); 
if (c.getTimeInMillis() - Calendar.getInstance().getTimeInMillis() < 0) 
    c.add(Calendar.DAY_OF_YEAR, 7); 
return c.getTimeInMillis(); 
+1

你可能也想截断H-M-S-sss .... – Affe

0

使用GregorianCalendar其延伸Calendar。尝试类似:

GregorianCalendar currentTime = new GregorianCalendar(); 
GregorianCalendar targetTime = new GregorianCalendar(); 

//Get Day and Time from config file 
targetTime.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY); 

//Add a week if the targetTime is from last Sunday 
if (targetTime.before(currentTime)) 
{ 
    targetTime.add(Calendar.DAY_OF_YEAR, 7); 
} 

System.out.println(currentTime.getTime().toString() + ", " + targetTime.getTime().toString()); 
+0

如果您使用全球时间,您可能还需要将配置文件中的时间转换为用户的语言环境。 – DoubleDouble

相关问题