首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >日历getTime()只返回EST

日历getTime()只返回EST
EN

Stack Overflow用户
提问于 2013-11-05 15:31:54
回答 3查看 2.1K关注 0票数 3
代码语言:javascript
复制
Calendar cl =  Calendar.getInstance(TimeZone.getTimeZone("America/Los_Angeles"));
cl.setTimeInMillis(time); 
Toast.makeText(getActivity(), cl.getTime().toString(), Toast.LENGTH_LONG).show();

不管我说什么,它总是会在EST中返回时间。我想让它回到PST的时间。有人知道这肯定是错的吗?

附注:

我的当地时间是东部时间。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-11-05 16:16:52

试试这个:

代码语言:javascript
复制
TimeZone.setDefault(TimeZone.getTimeZone("PST"));
Calendar cl = Calendar.getInstance();
票数 3
EN

Stack Overflow用户

发布于 2013-11-05 16:41:22

这并不是一个真正的答案,但它太大了,不能发表评论。这就是我发现的。

我的测试是这样的

代码语言:javascript
复制
    TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles");
    Calendar cl = Calendar.getInstance(tz);

    System.out.println(tz.getDisplayName());
    String dayname = cl.getDisplayName(Calendar.DAY_OF_WEEK,Calendar.SHORT,Locale.US);
    String monthname = cl.getDisplayName(Calendar.MONTH,Calendar.SHORT,Locale.US);
    int hour = cl.get(Calendar.HOUR);
    int min = cl.get(Calendar.MINUTE);
    int sec = cl.get(Calendar.SECOND);
    int mill = cl.get(Calendar.MILLISECOND);
    int year = cl.get(Calendar.YEAR);
    System.out.println("Time = " + cl.getTime().toString());
    System.out.println("Manually = " +
                           dayname + " " + monthname + " " +
                           hour + ":" + min +":" + sec + ":" + mill + " " +
                           cl.getTimeZone().getDisplayName(Locale.US) + " " + year);

给出了输出

代码语言:javascript
复制
Pacific Standard Time
Time = Tue Nov 05 11:36:33 EST 2013
Manually = Tue Nov 8:36:33:238 Pacific Standard Time 2013

看着Calendar.getTime()

代码语言:javascript
复制
public final Date getTime() {
    return new Date(getTimeInMillis());
}

跟着弹跳球..。

代码语言:javascript
复制
public long getTimeInMillis() {
    if (!isTimeSet) {
    updateTime();
    }
    return time;
}

private void updateTime() {
    computeTime();
    // The areFieldsSet and areAllFieldsSet values are no longer
    // controlled here (as of 1.5).
    isTimeSet = true;
}

但是我没有computTime()的来源,所以我在这里停了下来。

加布里埃尔的回答管用,fwiw。

票数 3
EN

Stack Overflow用户

发布于 2013-11-05 16:22:02

Calendar.getTime()返回一个java 日期实例,该实例表示从1970年1月1日00:00:00格林尼治标准时间开始的毫秒数。在Date实例上调用toString()将根据服务器上配置的时区打印日期。要正确格式化另一个时区中的输出日期,您需要查看如何使用日期格式化程序。

代码语言:javascript
复制
TimeZone est = TimeZone.getTimeZone("America/New_York");
Calendar cal = Calendar.getInstance(est);

DateFormat formatter = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy");
formatter.setTimeZone(est);
System.out.println(formatter.format(cal.getTime()));    
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19792632

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档