Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.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_Sql - Fatal编程技术网

Java 时间戳模式

Java 时间戳模式,java,sql,Java,Sql,它是这样给出当前时间的 Calendar firstTime =Calendar.getInstance(); java.sql.Timestamp t1=new Timestamp(firstTime.getTime().getTime()); 但我想要下面这样的时间戳模式 `2015-01-06 17:19:20.763` 如果我想像这样打印时间戳模式,我该怎么办 有人能帮我吗您可以使用SimpleDateFormat: '06-DEC-15 17:19:20.763000000

它是这样给出当前时间的

Calendar firstTime =Calendar.getInstance();

java.sql.Timestamp t1=new Timestamp(firstTime.getTime().getTime());
但我想要下面这样的时间戳模式

`2015-01-06 17:19:20.763`  
如果我想像这样打印时间戳模式,我该怎么办


有人能帮我吗

您可以使用SimpleDateFormat:

'06-DEC-15 17:19:20.763000000 PM'
我在SSS后面加了“0”,因为你得到的时间是以毫秒为单位的,超过三个“s”没有任何意义,但这是要求


toUpperCase是另一个要求(“Jan”是不够的)

您可以使用SimpleDataFormat:

'06-DEC-15 17:19:20.763000000 PM'
我在SSS后面加了“0”,因为你得到的时间是以毫秒为单位的,超过三个“s”没有任何意义,但这是要求


toUpperCase是另一个要求(“Jan”是不够的)

如果您坚持使用特定的输出格式(1:1),则应另外使用
DateFormatSymbols

        Calendar firstTime = Calendar.getInstance();
        SimpleDateFormat df = new SimpleDateFormat();
        df.applyPattern("dd-MMM-yy HH:mm:ss.SSS000000 aa");

        System.out.println(df.format(firstTime.getTimeInMillis()).toUpperCase());

请记住,
DateFormat
不是线程安全的。

如果您坚持使用特定的输出格式(1:1),则应另外使用
DateFormatSymbols

        Calendar firstTime = Calendar.getInstance();
        SimpleDateFormat df = new SimpleDateFormat();
        df.applyPattern("dd-MMM-yy HH:mm:ss.SSS000000 aa");

        System.out.println(df.format(firstTime.getTimeInMillis()).toUpperCase());


请记住,
DateFormat
不是线程安全的。

你们都想要24小时和AM/PM标记吗?是的,我想要24小时和AM/PM标记。你们想要打印还是存储在数据库中?如果首先看一下,您实际使用时间戳的目的是什么?如果它要到数据库,那么它如何格式化为字符串并不重要,只需将对象映射到查询参数即可。我遇到的问题是,我从java代码中获取了时间戳,并希望将其传递到plsql过程,其中in参数是时间戳类型,但plsql过程并没有使用这些时间戳,我觉得java时间戳和sql时间戳是不兼容的。这就是为什么我贴出这样的问题:你们都想要24小时和AM/PM标记吗?是的,我想要24小时和AM/PM标记。你们想要打印还是存储在数据库中?如果首先看一下,您实际使用时间戳的目的是什么?如果它要到数据库,那么它如何格式化为字符串并不重要,只需将对象映射到查询参数即可。我遇到的问题是,我从java代码中获取了时间戳,并希望将其传递到plsql过程,其中in参数是时间戳类型,但plsql过程并没有使用这些时间戳,我觉得java时间戳和sql时间戳是不兼容的。这就是为什么我贴出这样的问题this@mqsuresh“dd-MMM-yy hh:mm:ss.SSS-aa”正是您想要的图案。谢谢,非常好,它提供的是06-Jan-15 05:34:28.000000846 PM,,,但我需要06-Jan-15 05:34:28。846000000PM@demostene不完全是-
MMM
不会给出大写输出(如示例所示)并且依赖于区域设置(例如,此模式为我的区域设置和一月设置了“sty”)。另外,原始输出包含24小时格式,而不是12小时格式(因此您需要
HH
而不是
HH
)。@mqsuresh“dd-MMM-yy-HH:mm:ss.SSS-aa”正是您想要的模式。谢谢,非常好,它给出的是06-Jan-15 05:34:28.000000846 PM,,,但我需要06-Jan-15 05:34:28。846000000PM@demostene不完全是-
MMM
不会给出大写输出(如示例中所示),并且依赖于区域设置(例如,此模式为我的区域设置和一月设置提供“sty”)。此外,原始输出包含24小时格式,而不是12小时格式(因此您需要
HH
而不是
HH
)。@mqsuresh此输出仍然打印06-JAN-15 12:47:52.000000637 PM,而不是06-JAN-15 12:47:52.637000000 PM。看看我的解决方案。@demostene你是对的-你需要这些零,因为它们实际上是毫无意义的,因为在毫秒(1/1000秒)内没有3位数的精度了。除非您使用
System.nanoTime
,否则无法从
时间戳中获得更高的精度。至于您的解决方案:
toUpperCase
是不够的,因为它会在许多不同的地区中断。我没有看到任何地区要求。
MMM
的模式将显示所谓的“短月”,但这个短月字符串取决于当前的地区。换句话说,如果不明确地将
Locale
设置为英语(或者更好地使用
DateFormatSymbols
来避免不必要的
toUpperCase
,这在模式更改时可能不合适),您就不能保证在每个JVM实例上输出1月份的
“JAN”
。但是通过设置
DateFormatSymbols
上的
shortMonths
实例传递给
DateFormat
构造函数,您可以。@mqsuresh仍然可以打印06-JAN-15 12:47:52.000000637 PM,而不是06-JAN-15 12:47:52.637000000 PM。看看我的解决方案。@demostene你是对的-你需要这些零,因为它们实际上是毫无意义的,因为在毫秒(1/1000秒)内没有3位数的精度了。除非您使用
System.nanoTime
,否则无法从
时间戳中获得更高的精度。至于您的解决方案:
toUpperCase
是不够的,因为它会在许多不同的地区中断。我没有看到任何地区要求。
MMM
的模式将显示所谓的“短月”,但这个短月字符串取决于当前的地区。换句话说,如果不明确地将
Locale
设置为英语(或者更好地使用
DateFormatSymbols
来避免不必要的
toUpperCase
,这在模式更改时可能不合适),您就不能保证在每个JVM实例上输出1月份的
“JAN”
。但是,通过在
DateFormatSymbols
上设置
shortMonths
,可以将实例传递给
DateFormat
构造函数。