包含java時區問題的相關文章推薦的詞條

本文目錄一覽:

JAVA UTC時間的基準點問題

計算機用的是unix紀元,1970年1月1日 0時0分 UTC(協調世界時 即升級版的格林威治時間)

可以說是英國標準時間。

中國是UTC+8 八區,中國本地時間要在以上標準時間上面加8小時。

反映在java的timemilli毫秒時是,

long china_ts=System.currentTimeMillier()+1000*60*60*8;

但只在不支持Java SE時區的早期版本(比如Java Card,Java ME/MIDP1.0)才需要自己手工加。

現在的java系統本身有時區庫,用Calendar/Date類,會自動調整時區。不需要再手動算。按以上加法會畫蛇添足。

關於JAVA時間格式轉換問題,涉及時區

//我實現一個時鐘窗口程序給你了,好讓你更容易理解,希望對你有幫助。 import java.awt.*; import java.awt.event.*; import java.util.*; //世界時鐘 public class TimerTest { public static void main(String[] args) { new TimerTestFrame(“世界時鐘”); } } class TimerTestFrame extends Frame { /** * */ private static final long serialVersionUID = 1L; public TimerTestFrame(String s) { super(s); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { dispose(); System.exit(0); } }); setLayout(new GridLayout(2, 6)); ClockCanvas clk1 = new ClockCanvas(“北京”, “GMT+8”); // 創建時鐘 ClockCanvas clk2 = new ClockCanvas(“巴黎”, “GMT+2”); ClockCanvas clk3 = new ClockCanvas(“華盛頓”, “GMT-4”); ClockCanvas clk4 = new ClockCanvas(“洛衫磯”, “GMT-7”); ClockCanvas clk5 = new ClockCanvas(“倫敦”, “GMT+1”); ClockCanvas clk6 = new ClockCanvas(“芝加哥”, “GMT-5”); add(clk1); add(clk2); add(clk3); add(clk4); add(clk5); add(clk6); setSize(500, 350); // 設置框架寬高 setVisible(true); } } class ClockCanvas extends Canvas implements Runnable { /** * */ private static final long serialVersionUID = 1L; private int seconds = 0; private String city; private GregorianCalendar calendar; Thread t; public ClockCanvas(String c, String tz) { city = c; //也可以通過TimeZone.setTimeZone(String n)函數改變時區,n為時區參數名。 calendar = new GregorianCalendar(TimeZone.getTimeZone(tz)); t = new Thread(this); t.start(); setSize(125, 125); // 設置畫布大小 setBackground(Color.black); } // 重寫父類的方法繪製時鐘圖形 public void paint(Graphics g) { Graphics2D g2d = (Graphics2D) g; BasicStroke bstroke = new BasicStroke(2.0f); g2d.setStroke(bstroke); g2d.setColor(Color.green); g2d.drawOval(0, 0, 100, 100); bstroke = new BasicStroke(5.0f); g2d.setStroke(bstroke); g2d.drawLine(50, 0, 50, 5); g2d.drawLine(0, 50, 5, 50); g2d.drawLine(50, 95, 50, 98); g2d.drawLine(95, 50, 98, 50); double hourAngle = 2 * Math.PI * (seconds – 3 * 60 * 60) / (12 * 60 * 60); double minuteAngle = 2 * Math.PI * (seconds – 15 * 60) / (60 * 60); double secondAngle = 2 * Math.PI * (seconds – 15) / (60); bstroke = new BasicStroke(5.0f); g2d.setStroke(bstroke); g2d.drawLine(50, 50, 50 + (int) (30 * Math.cos(hourAngle)), 50 + (int) (30 * Math.sin(hourAngle))); bstroke = new BasicStroke(3.0f); g2d.setStroke(bstroke); g2d.drawLine(50, 50, 50 + (int) (40 * Math.cos(minuteAngle)), 50 + (int) (40 * Math.sin(minuteAngle))); bstroke = new BasicStroke(1.0f); g2d.setStroke(bstroke); g2d.drawLine(50, 50, 50 + (int) (45 * Math.cos(secondAngle)), 50 + (int) (45 * Math.sin(secondAngle))); g2d.setColor(Color.red); g2d.drawString(city, 35, 115); } public void timeElapsed() { //new Date()獲得當前時間 System.out.println(new Date()); calendar.setTime(new Date()); seconds = calendar.get(Calendar.HOUR) * 60 * 60 + calendar.get(Calendar.MINUTE) * 60 + calendar.get(Calendar.SECOND); } public void run() { try { while (true) { Thread.sleep(300); timeElapsed(); repaint(); } } catch (InterruptedException e) { } } }

java中關於時區轉換的問題

我倒是有個笨想法 截取最後5位與+0800比較(都先轉成DATE類型) 少多少就在HOURS上加多少 如果加完後的HOURS數大於24 則HOURS-24並且DATE加1

java時間轉換,帶時區的

我假設了你的已知時間類型為Calendar,如果不是你也可以自己改成Date類型,代碼如下:

import java.text.DateFormat;

import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.TimeZone;

public class Test {

public static void main(String[] args) {

//假如這個是你已知的時間類型

Calendar cal = Calendar.getInstance();

cal.getTimeInMillis();

//北京時區GMT+8

Calendar beijingcal = Calendar.getInstance();

beijingcal.clear();

beijingcal.setTimeZone(TimeZone.getTimeZone(“GMT+8”));

beijingcal.setTimeInMillis(cal.getTimeInMillis());

DateFormat fmt = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);

String beijingFormatStr = fmt.format(beijingcal.getTime());

System.out.println(beijingFormatStr);

}

}

原創文章,作者:簡單一點,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/129434.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
簡單一點的頭像簡單一點
上一篇 2024-10-03 23:26
下一篇 2024-10-03 23:26

相關推薦

  • Python官網中文版:解決你的編程問題

    Python是一種高級編程語言,它可以用於Web開發、科學計算、人工智慧等領域。Python官網中文版提供了全面的資源和教程,可以幫助你入門學習和進一步提高編程技能。 一、Pyth…

    編程 2025-04-29
  • 如何解決WPS保存提示會導致宏不可用的問題

    如果您使用過WPS,可能會碰到在保存的時候提示「文件中含有宏,保存將導致宏不可用」的問題。這個問題是因為WPS在默認情況下不允許保存帶有宏的文件,為了解決這個問題,本篇文章將從多個…

    編程 2025-04-29
  • Java Thread.start() 執行幾次的相關問題

    Java多線程編程作為Java開發中的重要內容,自然會有很多相關問題。在本篇文章中,我們將以Java Thread.start() 執行幾次為中心,為您介紹這方面的問題及其解決方案…

    編程 2025-04-29
  • Python爬蟲亂碼問題

    在網路爬蟲中,經常會遇到中文亂碼問題。雖然Python自帶了編碼轉換功能,但有時候會出現一些比較奇怪的情況。本文章將從多個方面對Python爬蟲亂碼問題進行詳細的闡述,並給出對應的…

    編程 2025-04-29
  • NodeJS 建立TCP連接出現粘包問題

    在TCP/IP協議中,由於TCP是面向位元組流的協議,發送方把需要傳輸的數據流按照MSS(Maximum Segment Size,最大報文段長度)來分割成若干個TCP分節,在接收端…

    編程 2025-04-29
  • 如何解決vuejs應用在nginx非根目錄下部署時訪問404的問題

    當我們使用Vue.js開發應用時,我們會發現將應用部署在nginx的非根目錄下時,訪問該應用時會出現404錯誤。這是因為Vue在刷新頁面或者直接訪問非根目錄的路由時,會認為伺服器上…

    編程 2025-04-29
  • 如何解決egalaxtouch設備未找到的問題

    egalaxtouch設備未找到問題通常出現在Windows或Linux操作系統上。如果你遇到了這個問題,不要慌張,下面我們從多個方面進行詳細闡述解決方案。 一、檢查硬體連接 首先…

    編程 2025-04-29
  • Python折扣問題解決方案

    Python的折扣問題是在計算購物車價值時常見的問題。在計算時,需要將原價和折扣價相加以得出最終的價值。本文將從多個方面介紹Python的折扣問題,並提供相應的解決方案。 一、Py…

    編程 2025-04-28
  • 如何解決當前包下package引入失敗python的問題

    當前包下package引入失敗python的問題是在Python編程過程中常見的錯誤之一。 它表示Python解釋器無法在導入程序包時找到指定的Python模塊。 正確地說,Pyt…

    編程 2025-04-28
  • Python存款買房問題

    本文將會從多個方面介紹如何使用Python來解決存款買房問題。 一、計算存款年限和利率 在存款買房過程中,我們需要計算存款年限和存款利率。我們可以使用以下代碼來計算存款年限和利率:…

    編程 2025-04-28

發表回復

登錄後才能評論