当前位置: 首页 > 知识库问答 >
问题:

简单日期格式更改时区

晁国发
2023-03-14

我在时间格式转换方面遇到了奇怪的问题。

我有字符串,时间=“11:00”

我必须将上面的字符串转换为日期,我正在执行以下操作:

Calendar cal= Calendar.getInstance();
cal.setTime(Convert.fromShortTime(timeIn)); // this method is below

public static SimpleDateFormat SHORT_TIME = new SimpleDateFormat("HH:mm");

public static Date fromShortTime(String shortTime)
{
    try {
        return shortTime == null ? null : SHORT_TIME.parse(shortTime);
    } catch (ParseException e) {
        return null;
    }
}

so cal.setTime(Convert.fromShortTime(timeIn));将值更改为:太平洋标准时间 1970 年 1 月 1 日星期四 10:00:00,字符串少 1 小时。

我的笔记本电脑时间是山区时间,设备时间是太平洋时间。如果我将笔记本电脑时间更改为太平洋,那么它工作正常。

我想知道为什么Android Studio的笔记本电脑时间会影响SimpledateFormat?

共有1个答案

党建义
2023-03-14

是的,它确实会影响。默认情况下,SimpleDateFormat 使用系统的默认时区(如果未指定)。尝试在方法中指定它(此外,SimpleDateFormat 不是线程安全的,所以不要将其用作静态变量):

public static Date fromShortTime(String shortTime){
    try {
        SimpleDateFormat shortTimeFormat = new SimpleDateFormat("HH:mm");
        shortTimeFormat.setTimeZone(TimeZone.getTimeZone("PST"));
        return shortTime == null ? null : shortTimeFormat.parse(shortTime);
    } catch (java.text.ParseException e) {
        return null;
    }
}
 类似资料:
  • 我正在尝试将DatePicker日期格式化为简单的数据格式(“yyyy-MM-dd HH: mm: ss Z”)。有人告诉我,我需要使用简单的数据格式将其解析为日期对象-简单的数据格式(“yyyy-MM-dd”),然后将其格式化为我需要的内容,如下所示。但是,我在尝试捕捉块中收到错误“重复局部变量eDate”。任何专家都可以查看我的代码并提出建议吗? 已更新

  • 问题内容: 如果我有一个日期,而我想要的只是这样的月份和日期(mm / dd),然后把这个月份变成08年7月,您将如何写日期 问题答案: 让我看看我是否理解得很好。 您有“ 07/08”之类的日期,并且想要“ 08年7月”? 您可以尝试SimpleDateFormat

  • 我有一个变量在一个类在测试情况下,我需要嘲笑它。我尝试过这样 但事实的确如此 giving me无法将给定对象格式化为日期 在一台机器和另一台机器上 它给我的日期不能为空。 我是Junit新手,需要帮助解决这个问题

  • 问题内容: 我试图改变对象的格式,我试图以这种方式做到这一点: 但这对对象没有任何影响,仍然是旧格式,无法真正理解为什么会这样。 问题答案: 请尝试将两个概念区分开:您的数据和向用户呈现的数据(或用于其他目的的格式设置,例如包含在JSON中)。的保持值7可以表示为(格式化成)7,07,007或7,同时仍保持刚好相同的值而没有任何格式化信息- 外的格式化谎言。同样,a 具有一个时间点,它可以表示为(

  • 我有Date对象的格式 我是怎么做到的?。 我试着用这个代码 当我试着做一个测试时,我会得到这样的结果: 我的问题是在sql将java.util.date更改为java.sql.date时出现的 我解决了这个问题,所以: 和测试:

  • 但这对对象没有任何影响,它还是用旧格式的,不能真正理解它为什么会那样。