This question already has answers here:
Java How to get time printed in IST
                                
                                    (2个答案)
                                
                        
                                去年关闭。
            
                    
我有一个文本视图,其上应显示日期时间,如下所示。

2018-04-25T12:40:15 IST


我尝试在android studio中进行简单的单元测试,它会打印出我想要的确切结果

我的考试班

  public class ExampleUnitTest {
@Test
public void addition_isCorrect() {
    Date now = Calendar.getInstance().getTime();
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss z");
    sdf.setTimeZone(TimeZone.getDefault());
    System.out.println(sdf.format(now) );
}
}


输出量

 2018-04-25T12:40:15 IST


但是当我在Activity中的TextView上显示它时,它显示的内容如下所示

2018-04-25T12:31:29 GMT+05:30


我不知道自己犯了什么错误,谁能帮助我实现目标。还要注意,IST并非对于所有结果都是静态的,应该动态取决于用户的时间zome。

最佳答案

我会去寻找Anuraag的答案,并显示完整的时区名称。

像IST和EST这样的缩写不是理想的,因为它们不是标准化的,甚至不是唯一的,请参见以下答案以获取更详细的说明:https://stackoverflow.com/a/18407231

示例:印度,以色列和爱尔兰使用IST,但您不知道它是哪一个。 EST被美国和澳大利亚使用,依此类推。

当然,在大多数情况下,用户会知道它是指他们所在的位置-印度的用户使用配置有印度时区的设备将显示IST,并且用户会知道它是正确的。但是,如果该用户前往爱尔兰或以色列并且不更改设备的设置怎么办?我想它可能会显示“ IST”,但使用该国的当地时间可能会造成混淆。我希望显示完整的时区ID并消除歧义。

10-06 09:23