每次我尝试获取当前时间(我有一个按钮,我们称之为“botonGuardarEstado”)我得到相同的时间和分钟。我所注意到的是,我得到的时间是我打开应用程序的时间。我的意思是,如果我在上午7:10打开应用程序并在上午7:12按下按钮,我会在上午7:10到达。这是我的代码:
DateFormat formatoFecha = new SimpleDateFormat("HH:mm dd/MM/yyyy");
String fecha = formatoFecha.format(Calendar.getInstance().getTime());
我没有像不同年份或类似的东西那样获得奇怪的价值,并且格式运作良好,问题是我得到相同的时间:每次按下按钮时分钟。我alredy尝试了不同的获取日期和时间的方法,比如Date(),甚至只使用类似的东西获得小时和分钟
Calendar cal = Calendar.getInstance();
int mins = cal.get(Calendar.MINUTE);
但仍然有相同的值。
我有以下课程
private class InfoArchivo {
String temperatura, humedad, gas, humo, iluminacion, riego, ventilacion, fecha;
public InfoArchivo(String temperatura, String humedad, String gas, String humo, String iluminacion, String riego, String ventilacion, String fecha){
this.temperatura = temperatura;
this.humedad = humedad;
this.gas = gas;
this.humo = humo;
this.iluminacion = iluminacion;
this.riego = riego;
this.fecha = fecha;
if(!ventilacion.equals("0"))
this.ventilacion = "1";
else
this.ventilacion = "0";
}
我有一个该类的实例数组。我想要做的是使用该数组编写一个csv文件。其他所有数据(温度,humedad等)都是正确的。唯一引起麻烦的是日期(fecha)。完成csv文件的创建,直到我按下另一个按钮。当我按下botonGuardarEstado按钮我得到日期时,创建一个InfoArchivo类的实例并将其添加到数组
编辑:也试过这个但仍然有同样的问题:
Instant instant = Instant.now();
ZoneId zoneId = ZoneId.of("America/Guatemala");
ZonedDateTime zdt = ZonedDateTime.ofInstant(instant, zoneId);
DateTimeFormatter formato = DateTimeFormatter.ofPattern("HH:mm dd/MM/yyyy");
String fecha = zdt.format(formato);
答案 0 :(得分:0)
您显示的代码是正确的。
因此,您的问题必定会在您应用的其他位置发生。也许您没有正确地将新String(fecha
)提供给用户界面。或者您可能需要做一些事情来刷新新String值的显示。我们无法帮助您,因为您没有提供其他代码。
顺便说一下,你正在使用过时的类。已被证明如此混乱和麻烦的旧日期时间类已被java.time框架取代。请参阅Oracle Tutorial。
Instant
Instant
是UTC中时间轴上的一个时刻,分辨率最高为nanoseconds。
Instant instant = Instant.now(); // Current moment in UTC.
应用时区(ZoneId
)以获得ZonedDateTime
。如果省略时区,则会隐式应用JVM的当前默认时区。最好明确指定期望/预期的时区。
ZoneId zoneId = ZoneId.of( "America/Montreal" ); // Or "Asia/Kolkata", "Europe/Paris", and so on.
ZonedDateTime zdt = ZonedDateTime.ofInstant( instant , zoneId );
您可以轻松生成String
作为日期时间值的文本表示。您可以使用标准格式,自己的自定义格式或自动本地化格式。
您可以调用toString
方法,使用通用且合理的ISO 8601标准格式化文本。
String output = instant.toString();
2016-03-19T05:54:01.613Z
或者使用DateTimeFormatter
类指定您自己的特定格式模式。
DateTimeFormatter formatter = DateTimeFormatter.ofPattern( "dd/MM/yyyy hh:mm a" );
为人类语言(英语,Locale
等)指定French,用于翻译日/月的名称,以及定义文化规范,例如年和月的顺序和日期。请注意,Locale
与时区无关。
formatter = formatter.withLocale( Locale.US ); // Or Locale.CANADA_FRENCH or such.
String output = zdt.format( formatter );
更好的是,让java.time自动完成本地化工作。
DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDateTime( FormatStyle.MEDIUM );
String output = zdt.format( formatter.withLocale( Locale.US ) ); // Or Locale.CANADA_FRENCH and so on.