Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在格林尼治时间获得下周四的时间戳_Java_Android_Calendar_Simpledateformat - Fatal编程技术网

Java 如何在格林尼治时间获得下周四的时间戳

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)得到它。我正试图在格林尼治标准时间拿到它,但事情变得一团糟。我不知道我哪里做错了 我

我正在制作一个倒计时计时器,它将在格林尼治时间运行。重置为格林尼治时间周四上午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提到的,日期不在任何时区中。所以,当您打印日期时,它将在当前时区打印。设置格式化程序的时区,并使用它分析日期以在任何时区中打印: