Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.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 将datetime转换为字符串,错误的小时数_Java_Android_Datetime_Format - Fatal编程技术网

Java 将datetime转换为字符串,错误的小时数

Java 将datetime转换为字符串,错误的小时数,java,android,datetime,format,Java,Android,Datetime,Format,我在我的android应用程序(java)中这样做: 但我有这个 01-16 14:31:13.308: D/ThS(25810): dt_ = Wed Jan 16 13:28:00 GMT+00:00 2013 01-16 14:31:23.758: D/ThS(25810): sdt_ = 20130116 HH:28 如果我把HH改成HH,我会得到这个 sdt_ = 20130116 01:28 但我需要这个 sdt_ = 20130116 13:28 这将为您做到这一点:

我在我的android应用程序(java)中这样做:

但我有这个

01-16 14:31:13.308: D/ThS(25810): dt_ = Wed Jan 16 13:28:00 GMT+00:00 2013
01-16 14:31:23.758: D/ThS(25810): sdt_ = 20130116  HH:28
如果我把HH改成HH,我会得到这个

sdt_ = 20130116  01:28
但我需要这个

sdt_ = 20130116  13:28

这将为您做到这一点:

SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd  HH:mm", Locale.getDefault());
String sdt_ = sdf.format(dt_);

我不知道,您的代码有什么问题,但此代码适用于我:

DateFormat df = new SimpleDateFormat("yyyyMMdd  HH:mm");
String sdt = df.format(new Date(System.currentTimeMillis()));
System.out.println(sdt);
编辑:

后来我发现您的原始代码应该可以使用以下代码:

String sdt_ = DateFormat.format("yyyyMMdd  kk:mm", dt_).toString();

显然,android.text.format.DateFormat不使用“H”约束,而是使用“k”来代替它!有关更多详细信息,请参见此问题:

您在
SimpleDateFormat
模式中使用了hh。这是12小时制。改用kk,它以24小时格式显示一天中的小时数。请参见

Try DateFormat.format(“'yyyyMMdd''HH:mm',dt));我添加了“:”)结果是01-16 15:04:21.818:D/ThS(29811):dt_u=yyyyMMdd HH:mmI在您的链接中没有看到任何“kk”。我在我的模式中使用了HH。@Foenix在表k hour in day(1-24)(Number)24中看到了谢谢,它正在工作(有或没有Locale.getDefault())它在没有
Locale.getDefault()
的情况下也可以工作,但是如果您使用Eclipse,它将显示一个lint警告,并要求您提供一个允许本地日期格式设置的区域设置。因此,显式设置默认区域设置与省略默认区域设置是一样的。是的,我看到了这个提示,现在我知道如何使用默认区域设置了,谢谢。如果您仍然想使用android.text.format.DateFormat:-),请参阅我的另一个答案
String sdt_ = DateFormat.format("yyyyMMdd  kk:mm", dt_).toString();