Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
这个的Java日期时间格式_Java_Datetime - Fatal编程技术网

这个的Java日期时间格式

这个的Java日期时间格式,java,datetime,Java,Datetime,这个的Java日期时间格式是什么 2012年11月26日星期一13:57:03 SGT 我想将此字符串转换为日期,并将其转换为另一种格式,如“yyyy-MM-dd HH:MM:ss” 将日期转换为字符串并不难 格式格式化程序=新的SimpleDataFormat(“yyyy-MM-dd HH:MM:ss”) 但我发现没有有效的格式将“Mon Nov 26 13:57:03 SGT 2012”转换为日期格式 ===== 找到的解决方案: DateFormat oldDateFormat = new

这个的Java日期时间格式是什么

2012年11月26日星期一13:57:03 SGT

我想将此字符串转换为日期,并将其转换为另一种格式,如“yyyy-MM-dd HH:MM:ss”

将日期转换为字符串并不难

格式格式化程序=新的SimpleDataFormat(“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);

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

您可以在
SimpleDataFormat
的javadoc中找到示例。请参见

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

。。。但它使用默认的系统时区作为输出。现在还不清楚你想要结果在哪个时区。
Date
中没有存储时区的内容,因此很难保留文本中给出的原始时区,因此您需要自己决定使用哪个时区

注意,我在输入和输出中都指定了
Locale.US
;这通常适用于指定自定义格式时,尤其是对于依赖于月和日名称的输入

如评论中所述,我个人建议在日期/时间工作中尽可能使用。。。这是一个比
日期
/
日历
好得多的API。不幸的是,Joda Time无法解析时区-从
DateTimeFormat
的文档:

区域名称:无法分析时区名称('z')


还值得注意的是,如果有任何方法可以影响输入数据,那么将它们从使用时区缩写中移开将是一个很好的步骤。

尝试
SimpleDateFormat.parse()
函数将字符串转换为
日期

SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy");
Date parseDate = sdf.parse(strInput);

小心解析异常

现在jon skeet会来告诉您使用Joda time.=)@伊万诺维奇:一般来说是的,但我不确定乔达时间在解析时是否能处理时区缩写…@JonSkeet我没有用过乔达时间。但是谢谢你让我的预言(我之前的评论)成真=)@Iannyboy,如果有任何帮助,你能接受答案吗?看这里:这应该能解决你的问题。。
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);
    }
}
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);
    }
}