Java 如何在格林尼治时间获得下周四的时间戳
我正在制作一个倒计时计时器,它将在格林尼治时间运行。重置为格林尼治时间周四上午12:00。然后它将再次倒计时 我已经做了倒计时。它接受2个输入 1-当前时间戳 2-下周四(格林威治标准时间上午12:00)的时间戳。假设当前是2014年7月24日格林威治标准时间凌晨3:40,那么下周四应该是同一天,时间戳应该是2014年7月24日格林威治标准时间12:00。 等等 我对第二部分有问题。我可以在我的本地时区(IST)得到它。我正试图在格林尼治标准时间拿到它,但事情变得一团糟。我不知道我哪里做错了 我很想从这里澄清我的概念 代码是:-Java 如何在格林尼治时间获得下周四的时间戳,java,android,calendar,simpledateformat,Java,Android,Calendar,Simpledateformat,我正在制作一个倒计时计时器,它将在格林尼治时间运行。重置为格林尼治时间周四上午12:00。然后它将再次倒计时 我已经做了倒计时。它接受2个输入 1-当前时间戳 2-下周四(格林威治标准时间上午12:00)的时间戳。假设当前是2014年7月24日格林威治标准时间凌晨3:40,那么下周四应该是同一天,时间戳应该是2014年7月24日格林威治标准时间12:00。 等等 我对第二部分有问题。我可以在我的本地时区(IST)得到它。我正试图在格林尼治标准时间拿到它,但事情变得一团糟。我不知道我哪里做错了 我
import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
public class test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(GetNextThursday());
System.out.println();
System.out.println("Current TIME DETAILS According to currentTimeMills :");
long endTime=System.currentTimeMillis();
Timestamp stamp = new Timestamp(endTime);
Date date = new Date(stamp.getTime());
System.out.println(date);
System.out.println(endTime);
}
public static long GetNextThursday() {
SimpleDateFormat f = new SimpleDateFormat("dd.MM.yyyy, HH:mm");
Calendar c = Calendar.getInstance();
int todayday=c.get(Calendar.DAY_OF_WEEK);
switch(todayday)
{
case 1:
//It's sunday
c.add(Calendar.DATE, 4);
c.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DATE), 12, 00, 00);
break;
case 2:
//It's Monday
c.add(Calendar.DATE, 3);
c.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DATE), 12, 00, 00);
break;
case 3:
//It's Tuesday
c.add(Calendar.DATE, 2);
c.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DATE), 12, 00, 00);
break;
case 4:
//It's Wednsday
c.add(Calendar.DATE, 1);
c.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DATE), 12, 00, 00);
break;
case 5:
//It's Thursday
if(c.get(Calendar.AM_PM) == 0)
{
c.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DATE), 12, 00, 00);
}
else
{
c.add(Calendar.DATE, 7);
c.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DATE), 12, 00, 00);
}
break;
case 6:
c.add(Calendar.DATE, 6);
c.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DATE), 12, 00, 00);
break;
case 7:
c.add(Calendar.DATE, 5);
c.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DATE), 12, 00, 00);
}
System.out.println("Next Thursday Based On CURRECT TIME (Default)");
System.out.println(c.getTime());
System.out.println(c.getTimeInMillis());
System.out.println();
TimeZone tz = TimeZone.getTimeZone("GMT");
c.setTimeZone(tz);
System.out.println(c.getTime());
System.out.println(c.getTimeInMillis());
System.out.println();
return (c.getTimeInMillis());
}
}
它所给予的是正确的。它给出了下周四上午12:00的时间戳。但它是在给它的IST。我想在格林尼治时间也一样
期待可能的解决办法
PS:我试图在StackOverflow上找到解决方案,然后我把它贴在了这里。可能解决方案在那里可用,但我无法找到1 嗯,
日期
无论如何都不会在特定的时区-但听起来你只需要将日历的时区
设置为UTC。我试过了。Calendar c=Calendar.getInstance(TimeZone.getTimeZone(“UTC”);但显示器仍在使用中。有什么解决方案吗?当你说“显示仍在IST中”时,我想你的意思是当你调用Date.toString()
-这将始终使用你的本地时区,但这并不意味着值本身是错误的。正如Jon提到的,日期不在任何时区中。所以,当您打印日期时,它将在当前时区打印。设置格式化程序的时区,并使用它分析日期以在任何时区中打印: