所以,我正在使用SimpleDateFormat将一个字符串“HH:MM AA”转换为“HH:MM”, 问题是我的代码在eclipse上工作得很好但是当我在Android Studio上运行时它显示错误的输出。这是我的两个代码。
答案 0 :(得分:0)
试试这段代码..
String date="2:30 PM";
SimpleDateFormat sdf5 = new SimpleDateFormat("hh:mm aa");
SimpleDateFormat sdf6 = new SimpleDateFormat("HH:mm");
try {
String str=sdf6.format(sdf5.parse(date));
Log.d("DATE TO:",str);
} catch (ParseException e) {
e.printStackTrace();
}
答案 1 :(得分:0)
问题是你使用“MM”作为分钟,但它应该是“mm”。 “MM”持续数月。
如果您希望恢复24小时值,则“HH”部分可以正常使用。
尝试这样的东西:
public static String getTimeFormatted(String time){
String s = "";
try{
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm aa", Locale.US);
Date d = sdf.parse(time);
SimpleDateFormat formatter = new SimpleDateFormat("HH:mm", Locale.US);
s = formatter.format(d);
}
catch(Exception ex){
s = ex.getMessage();
}
return s;
}
答案 2 :(得分:0)
试试这个
apply plugin: 'com.android.application'
android {
compileSdkVersion 27
defaultConfig {
applicationId "com.cornicore.icccricketworldcup2019"
minSdkVersion 17
targetSdkVersion 27
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support:recyclerview-v7:27.1.1'
implementation 'com.android.support:design:27.1.1'
implementation 'com.android.support:cardview-v7:27.1.1'
implementation 'com.android.support.constraint:constraint-layout:1.1.0'
implementation 'com.google.firebase:firebase-core:15.0.2'
implementation 'com.google.firebase:firebase-messaging:15.0.2'
implementation 'com.google.firebase:firebase-database:15.0.1'
implementation 'com.google.firebase:firebase-storage:15.0.2'
implementation 'com.google.firebase:firebase-auth:15.1.0'
implementation 'com.firebaseui:firebase-ui-database:3.2.2'
implementation 'com.squareup.picasso:picasso:2.5.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
apply plugin: 'com.google.gms.google-services'
答案 3 :(得分:0)
String newTimeString = LocalTime
.parse("2:30 PM", DateTimeFormatter.ofPattern("h:mm a", Locale.ENGLISH))
.toString();
System.out.println(newTimeString);
打印
14:30
即使在Android上,你也应该考虑不要与古老而臭名昭着的SimpleDateFormat
课程作斗争。 java.time
,现代Java日期和时间API,可以更好地使用。 LocalTime
是一个没有约会且没有时区的时间,因此看起来非常符合您的要求。
是的,java.time
适用于较旧和较新的Android设备。它只需要至少Java 6 。
org.threeten.bp
导入日期和时间类。HH:mm
。大写HH
表示小时,小写mm
表示
分钟。所以你得到了预期的14:30
。HH:MM
,即大写MM
。这是一个月。由于您解析的字符串中没有一个月,因此默认为1月,而结果在结果中呈现为01
,因此您获得了14:01
。 SimpleDateFormat
非常典型的是它同意打印一个从未出现过的月份,只是假装一切都很好,并没有告诉你错误。这只是我建议你避免上课的众多原因之一。java.time
。java.time
。java.time
向Java 6和7的后端(JST-310的ThreeTen)。