在Java中将常规日期转换为Julian Date,反之亦然 [英] Convert a Regular Date to Julian Date and vice versa in Java
本文介绍了在Java中将常规日期转换为Julian Date,反之亦然的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
以下是需要相同转换的代码:
public int convertToJulian(String unformattedDate)
{
/ *未格式化日期:ddmmyyyy * /
int resultJulian = 0;
if(unformattedDate.length()> 0)
{
/ *几个月* /
int [] monthValues = {31,28,31,30,31 ,30,31,31,30,31,30,31};
字符串dayS,monthS,yearS;
dayS = unformattedDate.substring(0,2);
monthS = unformattedDate.substring(3,5);
yearS = unformattedDate.substring(6,10);
/ *转换为整数* /
int day = Integer.valueOf(dayS);
int month = Integer.valueOf(monthS);
int year = Integer.valueOf(yearS);
//闰年检查
如果(年%4 == 0)
{
monthValues [1] = 29;
}
//开始构建朱利安日期
String julianDate =1;
//年份的最后两位数:2012 ==> 12
julianDate + = yearS.substring(2,4);
int julianDays = 0; (int i = 0; i< month-1; i ++)
{
julianDays + = monthValues [i];
}
julianDays + = day;
if(String.valueOf(julianDays).length()< 2)
{
julianDate + =00;
}
if(String.valueOf(julianDays).length()< 3)
{
julianDate + =0;
}
julianDate + = String.valueOf(julianDays);
resultJulian = Integer.valueOf(julianDate);
}
return resultJulian;
}
此代码将01.01.2013转换为113001
我想做的是将朱利安日期转换为常规日期,而不需要时间细节。
例如:朱利安日期是113029 ==>定期日期29.01.2013
请给我你如何做的想法。
谢谢。
解决方案
如果你想要113029 ==> 29.01.2013 try
String j =113029;
Date date = new SimpleDateFormat(Myydd)。parse(j);
String g = new SimpleDateFormat(dd.MM.yyyy)。format(date);
System.out.println(g);
输出
29.01.2013
I've written a simple code that converts a regular date to Julian date.
Here's the code for those who need the same conversion:
public int convertToJulian(String unformattedDate)
{
/*Unformatted Date: ddmmyyyy*/
int resultJulian = 0;
if(unformattedDate.length() > 0)
{
/*Days of month*/
int[] monthValues = {31,28,31,30,31,30,31,31,30,31,30,31};
String dayS, monthS, yearS;
dayS = unformattedDate.substring(0,2);
monthS = unformattedDate.substring(3, 5);
yearS = unformattedDate.substring(6, 10);
/*Convert to Integer*/
int day = Integer.valueOf(dayS);
int month = Integer.valueOf(monthS);
int year = Integer.valueOf(yearS);
//Leap year check
if(year % 4 == 0)
{
monthValues[1] = 29;
}
//Start building Julian date
String julianDate = "1";
//last two digit of year: 2012 ==> 12
julianDate += yearS.substring(2,4);
int julianDays = 0;
for (int i=0; i < month-1; i++)
{
julianDays += monthValues[i];
}
julianDays += day;
if(String.valueOf(julianDays).length() < 2)
{
julianDate += "00";
}
if(String.valueOf(julianDays).length() < 3)
{
julianDate += "0";
}
julianDate += String.valueOf(julianDays);
resultJulian = Integer.valueOf(julianDate);
}
return resultJulian;
}
This code converts 01.01.2013 to 113001
What I want to do is to convert a Julian date to regular date without time details. For example: Julian date is 113029 ==> Regular date 29.01.2013
Please give me your ideas on how to do it.
Thanks.
解决方案
If you want 113029 ==> 29.01.2013 try
String j = "113029";
Date date = new SimpleDateFormat("Myydd").parse(j);
String g = new SimpleDateFormat("dd.MM.yyyy").format(date);
System.out.println(g);
output
29.01.2013
这篇关于在Java中将常规日期转换为Julian Date,反之亦然的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文