如果我创建一个新的Date()对象.它将打印的默认时区是什么.
我的机器在GMT运行.我正在创建一个新的Date()对象.如果我打印为什么它显示Thu Jul 05 08:21:05 PKT 2012.如何将时区作为PKT?
我刚刚注意到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) 我正在尝试将毫秒时间(自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并更改时区的方法.
如果有人有办法做到这一点,我将非常感谢帮助,谢谢!
以下如何使用JPA和Hibernate以UTC时区存储日期/时间和时间戳我想将我的应用程序默认时区设置为UTC.我的应用程序在Linux服务器上运行tomcat和其他一些应用程序.服务器有其他运行更多应用程序的tomcat实例.
Timezone.setDefault(tz)会影响同一个tomcat实例上的其他应用吗?
它会影响其他tomcat实例上的其他应用程序吗?
是否可以仅为应用设置时区?我松散地记得有关安全管理器设置的一些内容.
我目前正在使用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工具日期在从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小时的差异.
有什么建议吗?
我在 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。 …
我正在尝试使用 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) 我正在与位于与我的不同时区的服务器上开发一个带有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,然后检索不正确的本地化值吗?