由于时区问题,Java应用程序无法执行

时间:2018-03-16 13:15:07

标签: java date timezone

我编写了一个Java程序,它接受当前的IST计时并生成报告。此报告应在IST下午6点生成,此检查在获取IST时区后在代码中完成:

/opt/metasploit/vendor/bundle/ruby/2.4.0/gems/activerecord-4.2.10/lib/active_record/connection_adapters/postgresql_adapter.rb

问题区域:我们正在PD时区中执行服务器中的该java文件,并且应用程序失败并且没有生成报告,因为PD时区正在覆盖dateStr值。

请帮助我,因为当我在代码中使用日期变量的IST时间时,我不清楚为什么会显示PD时间。

1 个答案:

答案 0 :(得分:1)

您的import cv2 import numpy as np import matplotlib.pyplot as plt import maxflow # Important parameter # Higher values means making the image smoother smoothing = 110 # Load the image and convert it to grayscale image image_path = 'your_image.png' img = cv2.imread('image_path') img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) img = 255 * (img > 128).astype(np.uint8) # Create the graph. g = maxflow.Graph[int]() # Add the nodes. nodeids has the identifiers of the nodes in the grid. nodeids = g.add_grid_nodes(img.shape) # Add non-terminal edges with the same capacity. g.add_grid_edges(nodeids, smoothing) # Add the terminal edges. The image pixels are the capacities # of the edges from the source node. The inverted image pixels # are the capacities of the edges to the sink node. g.add_grid_tedges(nodeids, img, 255-img) # Find the maximum flow. g.maxflow() # Get the segments of the nodes in the grid. sgm = g.get_grid_segments(nodeids) # The labels should be 1 where sgm is False and 0 otherwise. img_denoised = np.logical_not(sgm).astype(np.uint8) * 255 # Show the result. plt.subplot(121) plt.imshow(img, cmap='gray') plt.title('Binary image') plt.subplot(122) plt.title('Denoised binary image') plt.imshow(img_denoised, cmap='gray') plt.show() # Save denoised image cv2.imwrite('img_denoised.png', img_denoised) 变量未被任何时区覆盖,因为dateStr没有任何时区信息。

它的作用是在打印时使用 JVM默认时区:https://codeblog.jonskeet.uk/2017/04/23/all-about-java-util-date/

要么java.util.Date,要么使用您喜欢的日志API(例如System.out.println)进行记录,或者甚至在调试器中检查它的值。所有这些隐含都会调用log.info(date),而这种方法只会转换"到JVM默认时区的日期(实际上,toString()对象不会改变,只有Date)。

如果需要时区感知对象,可以使用String实例。或者甚至更好,如果你有Java 8或更高版本,只需使用date/time API

顺便说一句,如评论中所述,Calendar将返回与Calendar.getInstance(timezone).getTime()相同的内容,因此您必须在问题中包含更多代码,以显示您如何使用该日期,否则我们无法知道你在做什么以及如何解决它。