Java时间格式转换,如何获得时区?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java时间格式转换,如何获得时区?相关的知识,希望对你有一定的参考价值。
原格式为:03/01/2009-00:00
要转换成:Sat Jan 03 2009 00:00:00 GMT+0800
其中时区“GMT+0800”/“UTC+0100”需要可自动获取当地时区。
急!!!!!!!!!!!!!!
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)
参考技术A 其中时区“GMT+0800”/“UTC+0100”需要可自动获取当地时区。
说的明白一点,没有理解什么意思。
如何在 Python 中将本地时间转换为 GMT 时区
【中文标题】如何在 Python 中将本地时间转换为 GMT 时区【英文标题】:How to convert local time into GMT time zone in Python 【发布时间】:2021-03-12 07:56:50 【问题描述】:输入:
datetime.now().time()
这次我需要在 python 中转换成 GMT 格式
谁能帮我解决这个问题?
【问题讨论】:
什么是 GMT 格式? UTC 通常是 GMT... @MrFuppes 像现在的 IST 时间需要转换成 (GMT+05:30) 格式 【参考方案1】:假设“转换”是指格式为带有特定后缀的字符串。
选项 1:本地化到您机器的时区和 strftime:
from datetime import datetime
datetime.now().astimezone(None).strftime("%Y-%m-%d %H:%M:%S GMT%z")
# I'm on CET so this gives me
# '2020-11-30 13:43:15 GMT+0100'
选项 2:本地化到特定时区 - 和 stftime:
# Python 3.9: from zoneinfo import ZoneInfo
from dateutil.tz import gettz # Python <3.9
datetime.now(gettz("Asia/Kolkata")).strftime("%Y-%m-%d %H:%M:%S GMT%z")
# '2020-11-30 18:14:54 GMT+0530'
【讨论】:
我需要像这样传递 GMT+5:30 或 GMT-5:00 这样的参数,而不是 GMT%z,这可能吗? @AswathyMA:不确定我理解你真正想要做什么。是否要将日期时间从一个时区转换为另一个时区? @MrFuppes:是的...例如:我想将 IST 时间转换为 (GMT+5:30) 格式。以上是关于Java时间格式转换,如何获得时区?的主要内容,如果未能解决你的问题,请参考以下文章