如何将24小时时间字符串转换为标准java日期,反之亦然?
我想有两个功能:如何将24小时时间字符串转换为标准java日期,反之亦然?,java,date,time,Java,Date,Time,我想有两个功能: 假设我在字符串中有日期“11/12/2011”,在字符串中有时间:“0200”。我想要一个简单的函数(如果可能的话),它在java中接受两个参数(上面的日期和时间),在javadate对象中将其转换为2011年12月11日凌晨2:00 假设我有一个javaDate对象作为返回军事时间的唯一参数(例如11/12/2011 2:00AM)(例如“0200”) 是否有一些java库,或者实现上述功能的最佳方法是什么?或者java Date中是否内置了一些东西,可以让您在军事时间轻松获
“11/12/2011”
,在字符串中有时间:“0200”
。我想要一个简单的函数(如果可能的话),它在java中接受两个参数(上面的日期和时间),在javadate
对象中将其转换为2011年12月11日凌晨2:00Date
对象作为返回军事时间的唯一参数(例如11/12/2011 2:00AM)(例如“0200”)new SimpleDateFormat("MM/dd/yyyy HHmm Z").parse("11/12/2011" + " " + "0200" + " PST");
(可能军方总是使用UTC?我不知道…)。至于格式化,您可以使用setTimezone()在SDF实例上设置时区。]我就是这样做的
public static String militaryToOrdinaryTime(int milTime)
{
int hour = milTime / 100;
int min = milTime % 100;
String period;
if (hour < 0 || hour > 24 || min < 0 || min > 59)
{
return "";
}
else if (hour > 12)
{
hour = hour - 12;
period = "pm";
}
else
{
period = "am";
}
if (hour == 0)
{
hour = 12;
}
else if (min == 0)
{
String ordTime = hour + " " + period;
return ordTime;
}
else if (min < 10 && min > 0)
{
String min1 = String.valueOf(min);
min1 = "0" + min1;
String ordTime = hour + ":" + min1 + " " + period;
return ordTime;
}
String ordTime = hour + ":" + min + " " + period;
return ordTime;
}
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
int time = in.nextInt();
System.out.println(militaryToOrdinaryTime(time));
}
}
public静态字符串militaryToOrdinaryTime(int milTime)
{
整小时=milTime/100;
int min=milTime%100;
串周期;
如果(小时<0 |小时>24 |分钟<0 |分钟>59)
{
返回“”;
}
否则,如果(小时>12)
{
小时=小时-12;
period=“pm”;
}
其他的
{
period=“am”;
}
如果(小时==0)
{
小时=12;
}
如果(最小==0),则为else
{
字符串ordTime=hour+“”+句点;
返回时间;
}
否则如果(最小值<10&&min>0)
{
String min1=String.valueOf(min);
min1=“0”+min1;
字符串ordTime=hour+“:“+min1+”+句点;
返回时间;
}
字符串ordTime=hour+“:“+min+”+句点;
返回时间;
}
公共静态void main(字符串[]args)
{
扫描仪输入=新扫描仪(系统输入);
int time=in.nextInt();
System.out.println(军事到目标时间(time));
}
}
我就是这样做的
这是我的代码:
import java.util.Scanner;
class test{
int h,m,s;
public static void main (String args[]){
int hour,min,sec;
String format;
Scanner obj=new Scanner(System.in);
hour=obj.nextInt();
min=obj.nextInt();
sec=obj.nextInt();
format=obj.next();
int h,m,s;
h=((hour>=00&&hour<24)?hour:0);
m=((min>=00&&min<60)?min:0);
s=((sec>=00&&sec<60)?sec:0);
if(format.equals("PM")){
h= (h!=12? 12+h :h);
}else if (h==12)h=0;
System.out.print(h+":"+m+":"+s);
}}
import java.util.Scanner;
课堂测试{
int h,m,s;
公共静态void main(字符串参数[]){
整小时,分钟,秒;
字符串格式;
扫描器obj=新扫描器(System.in);
小时=obj.nextInt();
min=obj.nextInt();
sec=obj.nextInt();
format=obj.next();
int h,m,s;
h=((小时>=00&&hour=00&&min=00&§l;dr)
24小时制“正常”
没有“正常时间”和“军事时间”这两个词。地球上的大多数人都能熟练地使用12小时的临时时钟和24小时的重要时间,如火车时刻表。术语“军事时间”主要用于美国,奇怪的是,很少有人知道24小时的时间
避免遗留日期时间类
避免麻烦的旧日期时间类,如java.util.date
和.Calendar
。这些类现在已被这些类取代
您有一个仅日期值和一天中的某个时间值,并且希望将它们组合在一起。因此,首先建立每个部分
该类表示一个仅限日期的值,不含日期和时区。类似地,LocalTime
类表示一天中不含日期和时区的时间
LocalDate
可以指定显式格式模式
DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern( "mm/DD/uuuu" ).withLocale( Locale.US );
LocalDate ld = LocalDate.parse( "11/12/2011" , dateFormatter );
ld.toString():2011-01-12
LocalTime
在一天中的某个时候也要这样做
DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern( "HHmm" );
LocalTime lt = LocalTime.parse( "0200" , timeFormatter );
lt.toString():02:00
LocalDateTime
将这两部分连接成一个整体
此LocalDateTime
不代表实际时刻,即时间线上的一个点。如果没有UTC或时区的偏移,此对象就没有实际意义。新西兰奥克兰的凌晨2点比加尔各答的凌晨2点早几个小时,加尔各答的凌晨2点比法国巴黎的凌晨2点早几个小时,而魁北山的凌晨2点更晚欧共体约
当您再次需要问题中要求的仅日期或仅时间值时,可以从LocalDateTime
提取LocalDate
或LocalTime
LocalDate ld = ldt.toLocalDate();
LocalTime lt = ldt.toLocalTime();
LocalDate ld = zdt.toLocalDate();
LocalTime lt = zdt.toLocalTime();
ZoneDateTime
如果您知道此值的预期值,请应用ZoneOffset
以获得OffsetDateTime
。更好的是,如果知道,请使用ZonedId
以获得
zdt.toString():2011-01-12T02:00:00-05:00[美国/蒙特利尔]
当您再次需要问题中要求的仅日期或仅时间值时,可以从ZoneDateTime
提取LocalDate
或LocalTime
LocalDate ld = ldt.toLocalDate();
LocalTime lt = ldt.toLocalTime();
LocalDate ld = zdt.toLocalDate();
LocalTime lt = zdt.toLocalTime();
转化
最好避免像瘟疫一样使用java.util.Date
。但是如果您必须使用尚未更新为java.time类型的旧代码,您可以通过调用添加到旧类中的新方法来转换为java.time,或者从java.time转换为java.time。从ZonedDateTime
可以提取java.time.Instant
(UTC时间轴上的一个时刻)并在Date
上将其馈送到静态方法
java.util.Date utilDate = java.util.Date.from( zdt.toInstant() );
有关更多转换信息,请参阅
关于java.time
该框架内置于Java8及更高版本中。这些类取代了麻烦的旧日期时间类,如,&
该项目现已启动,建议迁移到java.time
要了解更多信息,请参阅.和搜索堆栈溢出以获取许多示例和说明
大部分java.time功能都在中向后移植到java 6和7,并进一步适应于中(请参阅)
该项目通过额外的类扩展了java.time。该项目是未来可能添加到java.time的一个试验场。您可以在这里找到一些有用的类,例如、、。@lacker在美国,24小时时间通常被称为“军事时间”
LocalDate ld = zdt.toLocalDate();
LocalTime lt = zdt.toLocalTime();
java.util.Date utilDate = java.util.Date.from( zdt.toInstant() );