我有一个字符串(Jan12)(通过在当前日期应用一些操作生成{20-jan-2012})现在我想将此字符串转换回Date格式。此值也应相同,即新的Date对象应具有值jan12而不是(20-jan-2012)。请帮忙。我试过做
java.sql.Date.valueOf("Jan12") [this throws IllegalArgumentException]
以及
new SimpleDateFormat("MMMyy").parse("Jan12") [By this Date gets converted to 20-jan-2012]
需要输出:日期对象的值为Jan12(12为年份) 我的代码: new java.text.SimpleDateFormat(“MMMyy”)。format(new java.text.SimpleDateFormat(“yyyy-MM-dd”)。parse(s))//这是一个给出Jan12的字符串
现在我真的想将 Mycode 转换为Date对象
Date now = new Date();
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
String s1 = df.format(now);
System.out.println(s1); // 2012-01-20
java.sql.Date d111=java.sql.Date.valueOf(s1);
System.out.println(d111); // 2012-01-20
DateFormat df1 = new SimpleDateFormat("MMMyy");
String s2 = df1.format(d111);
System.out.println(s2); //Jan12
Now i want s2 to be converted in Date object
答案 0 :(得分:1)
@Aditya,
如果您使用提供“Jan12”的Str2,则该字符串中没有日期部分,因此如果您将其转换为日期对象,它将获得“Jan”作为月份,12年作为年份,但它无法找到“那天“在那个字符串中。
如果您使用以下代码
try
{
Date d2 = df1.parse(s2); //here s2 is your string which gives "JAN12"
System.out.println(d2);
}
catch(ParseException pe)
{
System.out.println("parse exception..");
}
上述代码的输出将是:
Sun Jan 01 00:00:00 IST 2012
请注意,这一天部分重置为该月的第一天
因此,无法获得完整的日期对象,因为您的原始日期,月份和年份都会保留,但是日期部分会丢失。
答案 1 :(得分:0)
你是什么意思“被转换”?您的日期显示方式是一个单独的问题。查看格式化日期。
答案 2 :(得分:0)
所以12
是天,而不是年 - 您应该这样解析它。 Aslo,你需要告诉它这是哪一年:
System.out.println(new SimpleDateFormat("yyyyMMMdd").parse("2012" + "Jan12"));
输出
Thu Jan 12 00:00:00 EST 2012
答案 3 :(得分:0)
如果12岁是一年
Calendar calendar = Calendar.getInstance();
calendar.setTime(new SimpleDateFormat("MMMyy").parse("Jan12"));
calendar.set(Calendar.DATE, 1);
Date date = calendar.getTime(); // First Jan 2012
如果12日是一天
Calendar calendar = Calendar.getInstance();
calendar.setTime(new SimpleDateFormat("MMMdd").parse("Jan12"));
calendar.set(Calendar.YEAR, 2012);
Date date = calendar.getTime(); // 12 Jan 2012
答案 4 :(得分:0)
正确使用SimpleDateFormat类,它将完全按照您的意愿执行
String str_date="12-Jan-2012";
DateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy");
Date date = (Date)formatter.parse(str_date);
注意:formatter.parse()方法抛出ParseException,捕获它;
答案 5 :(得分:0)
我知道您希望将格式您的Date对象转换为String表示形式。 你可以使用SimpleDateFormat,类似于你的第二个例子:
Date d = new Date(112, 0, 20); //don't construct a date like this in production code, use a Calendar instance instead
String formattedDate = new SimpleDateFormat("MMMyy").format(d); // -> "Jan12"
请注意,您的Date对象代表一个特定的时间点,它始终具有与之关联的日期和时间。 如果要将日期与一个月的分辨率进行比较,则必须将日期和时间设置为中性值:
Calendar cal = Calendar.getInstance();
cal.setTime(d);
cal.set(Calendar.DAY_OF_MONTH, 1);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
d = cal.getTime();
答案 6 :(得分:0)
只需延长日期并自定义它即可使用您喜欢的解析和放大格式方法。