1.JAVA 编写时钟程序
2.javaä¸çnew date()
3.java中时区转换的源码方法有哪些?
4.全网最全!彻底弄透Java处理GMT-UTC日期时间
5.java DateFormat类的.setTimeZone(TimeZone zone)怎样使用?
JAVA 编写时钟程序
分太少了啊
给你一个只实现了时钟的面板。
import java.util.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.Timer;
public class Clock extends JFrame implements ActionListener
{
private static final long serialVersionUID = L;
Timer timer;
int x,源码y,old_X,old_Y, r,x0,y0,w,h,ang;
int sdo,mdo,hdo,old_M,old_H;
TimeZone tz =TimeZone.getTimeZone("JST");
final double RAD=Math.PI/.0;
public Clock()
{
super("时钟");
setSize(,);
setBackground(new Color(0,0,));
setResizable(false);
Dimension scr=Toolkit.getDefaultToolkit().getScreenSize();
Dimension fra=this.getSize();
if(fra.width>scr.width)
{
fra.width=scr.width;
}
if(fra.height>scr.height)
{
fra.height=scr.height;
}
this.setLocation((scr.width-fra.width)/2,(scr.height-fra.height)/2);
setVisible(true);
int delay = ;
ActionListener taskPerformer = new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
repaint();
}
};
new Timer(delay, taskPerformer).start();
}
public void actionPerformed(ActionEvent e)
{
timer.restart();
}
public void paint( Graphics g )
{
Insets insets = getInsets();
int L0 = (insets.left)/2, T0 = (insets.top)/2;
int hh,mm,ss;
String st;
h=getSize().height;
g.setColor(Color.white);
g.drawOval(L0+,T0+,h-,h-);
g.drawOval(L0+,T0+,h-,h-);
r=h/2-;
x0=+r-5+L0;
y0=+r-5-T0;
ang=;
for (int i=1; i<=; i++)
{
x=(int)((r+)*Math.cos(RAD*ang)+x0);
y=(int)((r+)*Math.sin(RAD*ang)+y0);
g.drawString(""+i,x,h-y);
ang-=;
}
x0=+r+L0; y0=+r+T0;
Calendar now=Calendar.getInstance();
hh=now.get(Calendar.HOUR_OF_DAY);
mm=now.get(Calendar.MINUTE);
ss=now.get(Calendar.SECOND);
g.setColor(Color.pink);
g.fillRect(L0,T0,,);
g.setColor(Color.blue);
if (hh < ) st="0"+hh; else st=""+hh;
if (mm < ) st=st+":0"+mm; else st=st+":"+mm;
if (ss < ) st=st+":0"+ss; else st=st+":"+ss;
g.drawString(st,L0,T0+);
sdo=-ss*6;
mdo=-mm*6;
hdo=-hh*-mm/2;
if (old_X > 0)
{
g.setColor(getBackground());
g.drawLine(x0,y0,old_X,(h-old_Y));
} else
{
old_M=mdo;
old_H=hdo;
}
g.setColor(Color.yellow);
x=(int)((r-8)*Math.cos(RAD*sdo)+x0);
y=(int)((r-8)*Math.sin(RAD*sdo)+y0)-2*T0;
g.drawLine(x0,y0,x,(h-y));
old_X=x;
old_Y=y;
if (mdo != old_M)
{
line(g,old_M,(int)(r*0.7),getBackground());
old_M=mdo;
}
if (hdo != old_H)
{
line(g,old_H,(int)(r*0.5),getBackground());
old_H=hdo;
}
line(g,mdo,(int)(r*0.7),Color.green);
line(g,hdo,(int)(r*0.5),Color.red);
}
public void line(Graphics g, int t, int n, Color c)
{
int [] xp = new int[4];
int [] yp = new int[4];
xp[0]=x0;
yp[0]=y0;
xp[1]= (int)((n-)*Math.cos(RAD*(t-4))+x0);
yp[1]=h-(int)((n-)*Math.sin(RAD*(t-4))+y0);
xp[2]= (int)( n *Math.cos(RAD* t )+x0);
yp[2]=h-(int)( n *Math.sin(RAD* t )+y0);
xp[3]= (int)((n-)*Math.cos(RAD*(t+4))+x0);
yp[3]=h-(int)((n-)*Math.sin(RAD*(t+4))+y0);
g.setColor(c);
g.fillPolygon(xp,yp,4);
}
public static void main(String args[])
{
new Clock();
}
}
javaä¸çnew date()
ä½ çè¿ä¸ªé®é¢ç³» ç³»ç» JVMçäº,å¯ä»¥è®¾ç½®ä¸æ¶åº,éè¿ä»¥ä¸çè¯å¥:
import java.util.*;
TimeZone tz = TimeZone.getTimeZone("ETC/GMT-8");
TimeZone.setDefault(tz);
//æ¾ç¤ºJavaè½è¯å«çç³»ç»ä¸æææ£ç¡®çæ¶åº
/**
String[] ids = TimeZone.getAvailableIDs();
for(int i = 0; i < ids.length; i++)
System.out.println(ids[i].toString());
*/
java中时区转换的方法有哪些?
在 Java 中进行时区转换的方法主要有以下几种:
1. 使用 java.util.TimeZone 类
可以通过 java.util.TimeZone 类表示不同的时区。通过其静态方法 getTimeZone(String ID) 获取指定时区标识符的源码 TimeZone 实例。接着使用 Calendar 类的源码 setTimeZone(TimeZone tz) 方法将 Calendar 实例设置为特定时区。
2. 使用 java.time API
从 Java 8 开始,源码java.time API 提供了更简便的源码浴血凤凰源码时区转换功能。使用 ZoneId 类表示时区,源码通过 ZonedDateTime 类表示带有时区信息的源码日期时间。同样也可以使用 Instant 类表示不带时区信息的源码日期时间,并通过 atZone(ZoneId zone) 方法转换为带有时区信息的源码日期时间。
3. 使用第三方库
除了内置方法,源码还可以借助第三方库如 Joda-Time、源码全源码编译Apache Commons Lang、源码ThreeTen-Extra、源码Date4J 和 JTimezones 进行时区转换。源码这些库提供了更多功能和灵活性,可根据具体需求选择。
3.1. Joda-Time
Joda-Time 是一个流行的日期时间处理库,通过 DateTimeZone 类表示时区。使用 DateTime 类表示带有时区信息的日期时间。通过 DateTimeFormatter 类解析字符串为带有时区信息的日期时间。
3.2. Apache Commons Lang
Apache Commons Lang 是一个常用工具库,包含日期时间处理工具类。bc源码无极使用 TimeZoneUtils 类进行时区转换。
3.3. ThreeTen-Extra
ThreeTen-Extra 是 JDK 8 中 java.time API 的扩展,提供额外日期时间类和工具类。包含 DateTimeUtils 类进行时区转换。
3.4. Date4J
Date4J 类似于 Joda-Time,提供日期时间类和工具类。通过 DateTimeZone 表示时区。使用 DateTime 表示带有时区信息的日期时间。借助 DateUtils 类进行时区转换。
3.5. JTimezones
JTimezones 是基于 IANA 时区数据库的 Java 时区转换库,提供日期时间处理工具类。彩民分析源码使用 TimeZoneConverter 类进行时区转换,传递源时区和目标时区作为参数。
以上概述了 Java 中常用时区转换方法,覆盖了内置类和第三方库。
全网最全!彻底弄透Java处理GMT-UTC日期时间
全网最全!彻底弄透Java处理GMT/UTC日期时间
在编程工作中,时间处理经常是遇到的一大挑战。本文将带你深入了解Java中如何实现和操作格林威治标准时间(GMT)和协调世界时间(UTC)。
在JDK中,处理日期/时间主要依赖于两套API:JDK 1.0的`java.util.Date`和JDK 8之后引入的JSR 日期时间API。本文将分别对这两套API进行讲解。绝密反击源码
**Date类型实现
**`java.util.Date`在JDK 1.0版本中就已存在,用于表示日期 + 时间。尽管年代久远,存在诸多问题,但由于其长久的历史和广泛的应用,`Date`类依然拥有庞大的用户群。
通过一个示例,我们可以看到`Date`类的输出结果包含了标准的UTC时间、本地时间以及格林威治时间。`java.text.DateFormat`类用于格式化日期时间。
**时区/偏移量TimeZone
**在JDK 8之前,Java使用`java.util.TimeZone`表示时区和偏移量。通过`TimeZone.getDefault()`可以获取当前JVM的默认时区。若需获取其他时区,可以通过`TimeZone.getTimeZone()`方法实现。
在跨时区转换时,可以使用`TimeZone`类的时区ID来获取指定时区的时间。注意,时区ID具有稳定性,而偏移量则可能在某些国家/地区因夏令时的调整而变化。
**ZoneId与ZoneOffset
**在JDK 8中,引入了`java.time.ZoneId`和`java.time.ZoneOffset`来表示时区和偏移量。`ZoneId`提供了一个统一的时区表示方式,而`ZoneOffset`则用于表示特定时间与格林威治标准时间之间的时差。
为了减少夏令时对时间处理的复杂性,使用`ZoneId`可以更好地处理不同国家/地区的夏令时规则。而`ZoneOffset`则提供了固定的时差表示,适用于没有夏令时的地区。
**JSR 类型
**考虑到`Date`类的局限性,Java 8引入了JSR 日期时间API,包括`LocalDate`、`LocalTime`、`LocalDateTime`等类,以及`ZonedDateTime`和`OffsetDateTime`等带时区的日期时间表示。
JSR 提供了对日期和时间的分离表示,使得时间和时区的管理更加灵活和直观。通过这些API,可以方便地实现跨时区的时间转换和显示。
**总结
**本文详细介绍了Java中处理GMT和UTC日期时间的多个方面,包括使用`Date`类的基本操作、`TimeZone`和`ZoneId`的使用、JSR 日期时间API的特性等。
为了简化时间处理,推荐在项目中弃用`Date`类,转而使用JSR 日期时间API,这将带来更强大、更灵活的日期时间处理能力,同时也减少了许多历史遗留问题和复杂性。
java DateFormat类的.setTimeZone(TimeZone zone)怎样使用?
setTimeZone
public void setTimeZone(TimeZone zone)
为此 DateFormat 对象的日历设置时区。
参数:
zone - 给定的新时区。
TimeZone
getDefaultpublic static TimeZone getDefault()
获取此主机的默认 TimeZone。默认 TimeZone 的来源可能随实现的变化而变化。
返回:
默认的 TimeZone。
另请参见:
setDefault(java.util.TimeZone)getTimeZone
public static TimeZone getTimeZone(String ID)
获取给定 ID 的 TimeZone。
参数:
ID - TimeZone 的 ID,要么是缩写(如 "PST" ),要么是全名(如 "America/Los_Angeles"),要么是自定义 ID(如 "GMT-8:")。注意,对缩写的支持只是出于 JDK 1.1.x 兼容性的考虑,因此应该使用全名。
返回:
指定的 TimeZone,如果给定的 ID 无法理解,则返回 GMT 区域。 DateFormat dateFormat = new SimpleDateFormat();
//dateFormat.setTimeZone(TimeZone.getDefault());
dateFormat.setTimeZone(TimeZone.getTimeZone("EET"));
System.out.println(dateFormat.format(new Date()));
2024-11-30 03:05
2024-11-30 02:57
2024-11-30 02:03
2024-11-30 01:46
2024-11-30 01:39
2024-11-30 01:07