相关疑难解决方法(0)

java.util.Date中的默认时区是什么

如果我创建一个新的Date()对象.它将打印的默认时区是什么.

我的机器在GMT运行.我正在创建一个新的Date()对象.如果我打印为什么它显示Thu Jul 05 08:21:05 PKT 2012.如何将时区作为PKT?

java timezone date

19
推荐指数
2
解决办法
5万
查看次数

JDZ6中的TimeZone.setDefault更改

我刚刚注意到JDK 6设置默认TimeZone的方法与JDK5不同.

以前,新的默认值将存储在线程局部变量中.使用JDK6(我刚刚查看了1.6.0.18),实现已经改变,因此如果用户可以写入"user.timezone"属性,或者如果没有安装SecurityManager,则时区会在整个VM范围内发生变化!否则会发生线程局部更改.

我错了吗?这似乎是一个相当大的变化,我在网上找不到任何关于它的东西.

这是JDK6代码:

 private static boolean hasPermission() {
  boolean hasPermission = true;
  SecurityManager sm = System.getSecurityManager();
  if (sm != null) {
   try {
    sm.checkPermission(new PropertyPermission("user.timezone", "write"));
   } catch (SecurityException e) {
    hasPermission = false;
   }
  }
  return hasPermission;
 }

 /**
  * Sets the <code>TimeZone</code> that is
  * returned by the <code>getDefault</code> method.  If <code>zone</code>
  * is null, reset the default to the value it had originally when the
  * VM first started.
  * @param zone the new default …
Run Code Online (Sandbox Code Playgroud)

java timezone default jdk1.6 jdk1.5

17
推荐指数
1
解决办法
9415
查看次数

在Java中从毫秒转换为UTC时间

我正在尝试将毫秒时间(自1970年1月1日以来的毫秒)转换为Java中的UTC时间.我已经看到很多其他问题利用SimpleDateFormat来改变时区,但我不知道如何把时间花在SimpleDateFormat上,到目前为止我只想出如何将它变成字符串或日期.

因此,例如,如果我的初始时间值是1427723278405,我可以使用其中任何一个String date = new SimpleDateFormat("MMM dd hh:mm:ss z yyyy", Locale.ENGLISH).format(new Date (epoch));或者Date d = new Date(epoch);但是每当我尝试将其更改为SimpleDateFormat以执行此类操作时遇到问题因为我是不确定将Date或String转换为DateFormat并更改时区的方法.

如果有人有办法做到这一点,我将非常感谢帮助,谢谢!

java datetime date simpledateformat

11
推荐指数
2
解决办法
3万
查看次数

java时区setDefault效果

以下如何使用JPA和Hibernate以UTC时区存储日期/时间和时间戳我想将我的应用程序默认时区设置为UTC.我的应用程序在Linux服务器上运行tomcat和其他一些应用程序.服务器有其他运行更多应用程序的tomcat实例.

Timezone.setDefault(tz)会影响同一个tomcat实例上的其他应用吗?

它会影响其他tomcat实例上的其他应用程序吗?

是否可以仅为应用设置时区?我松散地记得有关安全管理器设置的一些内容.

java timezone tomcat default utc

9
推荐指数
2
解决办法
6783
查看次数

带有时区格式的Java日期时间

我目前正在使用SimpleDateFormat格式创建日期时间值yyyy-MM-dd HH:mm:ss.这是我的代码:

     Date date = new SimpleDateFormat("yy-M-d H:m:ss").parse(datetime);
     String Dtime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date);
Run Code Online (Sandbox Code Playgroud)

但是,我希望格式为:

  2013-04-12T13:38:48+02:00
Run Code Online (Sandbox Code Playgroud)

如何添加时区以获得所需的格式?

谢谢!

java timezone datetime

5
推荐指数
1
解决办法
5万
查看次数

C#Ticks转换为java util date; 日期落后5小时?

我需要帮助.我一直试图找出为什么java工具日期在从C#ticks 转换后落后5个小时.

C#,日期是6/8/2013 11:02:07 AM,我将此日期转换为刻度,然后将其传递给java as long.

代码段:

采取:

- long TICKS_AT_EPOCH = 621355968000000000L;
- long TICKS_PER_MILLISECOND = 10000;

java.util.Date date = new java.util.Date((ctime - TICKS_AT_EPOCH) / TICKS_PER_MILLISECOND);
Run Code Online (Sandbox Code Playgroud)

现在java的工作日期是星期六08月06日06:02:07 CDT 2013

请注意,小时是5小时的差异.

有什么建议吗?

c# java date

5
推荐指数
2
解决办法
4618
查看次数

Spring Boot JPA 应用程序中的时区问题

我在 spring boot jpa 应用程序中面临日期时间问题。

例如,在我的数据库中,我有一列created_on包含2019-07-11 09:30:00日期。当我获取这条记录时,JPA 会将其转换为 UTC。
表示日期2019-07-11 09:30:00转换为2019-07-11 05:00:00.

我的系统时间位于 IST 中,日期也保存在 IST 的数据库中。

我正在使用mysql数据库。

在我的实体中

private Date createdOn;
Run Code Online (Sandbox Code Playgroud)

数据库列:

created_on timestamp
Run Code Online (Sandbox Code Playgroud)

服务:

@Service
@Transactional(readOnly = true)
public class EntityTypeService {
  @Autowired
  private IEntityTypeRepository entityTypeRepository;

  public EntityType findById(Long id) {
    EntityType entityType = entityTypeRepository.findById(id).orElse(new EntityType());
    System.out.println(entityType.getCreatedOn());
    return entityType;
  }
}
Run Code Online (Sandbox Code Playgroud)

存储库

@Repository
public interface IEntityTypeRepository extends CrudRepository<EntityType, Long> {
}
Run Code Online (Sandbox Code Playgroud)

数据库中的日期是2019-07-11 09:30:00

但是当我在服务上打印它时,System.out.println(entityType.getCreatedOn());它给了我2019-07-11 05:00:00。 …

mysql timezone hibernate jpa spring-boot

4
推荐指数
1
解决办法
1万
查看次数

使用 Java 在 CST 时区读取系统时间

我正在尝试使用 Java 读取 CST 时区中的系统日期。我尝试了下面的代码,但是每当我使用formatter.parse()它时,它都会返回 EST 时区的时间。

private Date getTodayInCST() {
    Calendar currentdate = Calendar.getInstance();
    DateFormat formatter = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
    TimeZone obj = TimeZone.getTimeZone("CST");
    formatter.setTimeZone(obj);

    String today = formatter.format(currentdate.getTime());
    try {
        return formatter.parse(today);
    } catch (ParseException e) {
        e.printStackTrace();
    }
    return null;
}
Run Code Online (Sandbox Code Playgroud)

java

3
推荐指数
1
解决办法
2万
查看次数

Java和MySQL中的时间戳和时区转换

我正在与位于与我的不同时区的服务器上开发一个带有MySQL数据库的Java应用程序,我正在尝试在我的数据库中使用DATETIME或TIMESTAMP.

在阅读问题后,我应该使用字段'datetime'还是'timestamp'?MySQL文档一样,我认为TIMESTAMP对我来说更好,因为它将值转换为UTC进行存储,然后返回当前时区进行检索.

此外,正如用户Jesper在线程中所解释的那样,java.util.Date对象在内部仅是UTC时间戳(即自Epoch以来的毫秒数),当您执行toString()时,它将根据您当前的时区显示.

对我来说,这看起来是一个好习惯:将日期时间存储为UTC时间戳,然后根据当前时区显示它们.

我就是这样做的,但后来我从Prepared Statements 的Java文档中找到了这个并且非常困惑:

void setTimestamp(int parameterIndex,Timestamp x,Calendar cal)抛出SQLException

使用给定的Calendar对象将指定参数设置为给定的java.sql.Timestamp值.驱动程序使用Calendar对象构造SQL TIMESTAMP值,然后驱动程序将该值发送到数据库.使用Calendar对象,驱动程序可以计算考虑自定义时区的时间戳.如果未指定Calendar对象,则驱动程序将使用默认时区,即运行应用程序的虚拟机的时区.

在此之前,我认为时间戳总是按UTC惯例.为什么人们想要一个本地化的时间戳而不是它的本地化表示?这对每个人来说都不会让人感到困惑吗?

这些转换如何运作?如果Java采用UTC时间戳并将其转换为任意时区,那么它如何告诉MySQL它在哪个时区呢?

MySQL不会假设此时间戳是UTC,然后检索不正确的本地化值吗?

java mysql timestamp

3
推荐指数
1
解决办法
3141
查看次数

如何在过去的特定时间使用UTC创建Date对象?

是否有可能创建一个java.util.Date保证为UTC 的对象,并且在过去的特定时间,例如一小时前或一天前,这是一个好主意吗?

我已经回顾了截至4小时前的Stack Overflow问题 获取日期及其答案.但是我想避免添加更多依赖项,例如jodaTime,并且接受的答案使用System.currentTimeMillis()哪个是本地时区,不是吗?

java date utc

3
推荐指数
2
解决办法
354
查看次数