我将于2016年5月9日15:02:40亚洲/加尔各答2016年的数据库中获取日期,我必须将其更改为2016年5月9日15:02:40 IST 2016.这是我正在使用的格式化程序将其他日期更改为Mon May 09 15:02:40 IST 2016.
public static Timestamp convertStringToTimestamp(String date, String format){
Timestamp timeStamp = null;
java.util.Date time = null;
if(date!=null){
final SimpleDateFormat sdf= new SimpleDateFormat(format);
final SimpleDateFormat sdf1= new SimpleDateFormat("yyyy-mm-dd hh:mm:ss");
try {
time= sdf.parse(date);
timeStamp = new Timestamp(sdf1.parse(sdf1.format(time)).getTime());
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return timeStamp;
}
答案 0 :(得分:0)
假设这是java.sql.Timestamp
,此类对象不包含时区,只包含时间和日期。
如果要为时区输出三个字母的首字母缩写词(在您的情况下为IST),当您将SimpleDateFormat
导出为字符串时,应放在z
中的格式为sudo apt-get install nodejs-legacy
。但是,请注意,再次解析时会丢失。
答案 1 :(得分:0)
如果您使用的是Java 8,可以试试这个。
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import org.junit.Test;
public class ZonedDateTimePipeTest {
public static String formatWithResolveZoneIdToZoneNameJava8(String text) {
// create global variable
DateTimeFormatter in = DateTimeFormatter.ofPattern("EEE MMM dd H:mm:ss VV yyyy");
ZonedDateTime zonedDateTime = ZonedDateTime.parse(text, in);
// create global variable
DateTimeFormatter out = DateTimeFormatter.ofPattern("EEE MMM dd H:mm:ss z yyyy");
// See for meaning of formatter symbols:
// https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html
return out.format(zonedDateTime);
}
@Test
public void conversion() throws Exception {
String in = "Mon May 09 15:02:40 Asia/Kolkata 2016";
String out = "Mon May 09 15:02:40 IST 2016";
assertThat(formatWithResolveZoneIdToZoneNameJava8(in), is(out));
}
}