java date nov_Java DateTime格式为此

此Java日期时间格式是什么?

Mon Nov 26 13:57:03 SGT 2012

我想将此字符串转换为Date并将其转换为另一种格式,例如" yyyy-MM-dd HH:mm:ss"。

从日期转换为字符串并不难。

Format formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

但是我找不到将" Mon Nov 26 13:57:03 SGT 2012"转换为日期格式的有效格式...

=====

找到解决方案:

DateFormat oldDateFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy");

Format newDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

Date oldDate = oldDateFormat.parse(oldTimeString);

String newDateString = newDateFormat.format(oldDate);

现在,乔恩·斯凯特(jon skeet)会来告诉您使用Joda时间。 =)

@ivanovic:是的,但是我不确定在解析时,Joda Time是否可以应付时区缩写...

@JonSkeet我还没有使用Joda时间。 但是,感谢您使我的甲骨文(我之前的评论)为true =)

@Iannyboy,如果有帮助,您能接受答案吗?

看到这里:stackoverflow.com/a/11097520/2895571这应该可以解决您的问题。

这将起作用,EEE MMM dd HH:mm:ss z yyyy

您可以在SimpleDateFormat的javadoc中找到示例。参见http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html

尝试使用SimpleDateFormat.parse()函数将字符串转换为Date。

SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy");

Date parseDate = sdf.parse(strInput);

当心解析异常

好吧,这段代码会产生一些输出

import java.util.*;

import java.text.*;

public class Test {

public static void main(String[] args) throws ParseException {

DateFormat inputFormat = new SimpleDateFormat("E MMM dd HH:mm:ss z yyyy",

Locale.US);

DateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss",

Locale.US);

String text ="Mon Nov 26 13:57:03 SGT 2012";

Date date = inputFormat.parse(text);

System.out.println(outputFormat.format(date));

}

}

...但是它使用默认的系统时区进行输出。尚不清楚要在哪个时区中显示结果。Date中没有任何内容可存储时区,这使得很难保留文本中给出的原始时区,因此您需要自己确定哪个时区使用。

注意,我在输入和输出中都指定了Locale.US。在指定自定义格式时,这通常是合适的,特别是对于依赖于月份和日期名称的输入。

正如评论中指出的那样,如果您可以进行日期/时间工作,我个人建议使用Joda Time ...比Date / Calendar更好的API。不幸的是,Joda Time无法解析时区-从DateTimeFormat的文档中:

Zone names: Time zone names ('z') cannot be parsed.

还值得注意的是,如果有任何方法可以影响输入数据,那么最好不要使用时区缩写。

import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.Date;

public class CPDateTime

{

public static void main(String[] args)

{

Calendar cal  = Calendar.getInstance();

//subtracting a day

//cal.add(Calendar.DATE, -1);

cal.add(Calendar.MONTH, -1);

SimpleDateFormat prev_day = new SimpleDateFormat("dd");

SimpleDateFormat prev_month = new SimpleDateFormat("MM");

SimpleDateFormat prev_year = new SimpleDateFormat("YYYY");

String prev_day_str = prev_day.format(new Date(cal.getTimeInMillis()));

System.out.println(prev_day_str);

String prev_month_str = prev_month.format(new Date(cal.getTimeInMillis()));

System.out.println(prev_month_str);

String prev_year_str = prev_year.format(new Date(cal.getTimeInMillis()));

System.out.println(prev_year_str);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值