[英]Date and Calender (input string) conversion and manipulation in Java
我要解决的问题如下。 在尼泊尔,我们使用Bikram Sambat(BS)作为日历,也使用格鲁吉亚日历(AD)。 我正在尝试将BS转换为AD,并将AD转换为BS。 BS比AD提前56年零8个月。 例如今天:2013年2月17日是BS中的4(天)11(月)2070(年)。
package Day10;
import java.util.Date;
/**
* This is my driver class
*/
public class Driver {
public static void main (String[] args){
DateUtils dateUtils = new DateUtils(); //Object creation
Date date=dateUtils.getCurrentDate(); //current date
dateUtils.getAd("10 21 2070"); //method invoke for BS to AD. (It is mm/dd/yyyy BS)
}
}
package Day10;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
* This is my Service class for converting date values.
*/
final public class DateUtils {
public Date getCurrentDate(){
SimpleDateFormat dateFormat = new SimpleDateFormat("MMM dd yyyy");//date format
Date date = new Date();//current date
System.out.println(dateFormat.format(date));
return date;
}
//method to convert BS to AD
public Calendar getAd (String bs){
DateFormat dateFormat = new SimpleDateFormat("MM dd yyyy");//date format
Calendar ad = Calendar.getInstance();
//Converting String Value to Calendar Object
try { ad.setTime(dateFormat.parse(bs));
} catch (ParseException e){
System.out.println("Invalid");
}
System.out.println("Your AD date:"+dateFormat.format(bs));
return ad;
}
}
问题:在尝试将字符串格式更改为Calendar时,无法确定用于存储新的转换后Calendar值的变量。
我正在尝试将String值更改为Calendar,并从中减去56年零8个月。 那是个好方法吗?
谢谢。
如果您只想向日历添加几年/月,则可以
如下进行。 但是,这并不是真正的AD到BS的转换。
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.GregorianCalendar;
public class Test040 {
public static void main(String[] args) {
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
Calendar c = new GregorianCalendar();
c.add(Calendar.YEAR, 56);
c.add(Calendar.MONTH, 8);
c.getTime();
System.out.println(sdf.format(c.getTime()));
}
}
当您使用SimpleDateFormat解析BS字符串时,它可能会导致解析异常,因为BS月份没有与AD相同的日期数。 有时BS月份可以有32天,例如32-02-2070不是有效的字符串。 只要在程序中实现了BS月的天数计算,我认为没有任何错误是不可能的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.