itsource

Java에서 TimeStamp를 최신 상태로 변환하는 방법

mycopycode 2022. 10. 25. 21:34
반응형

Java에서 TimeStamp를 최신 상태로 변환하는 방법

' Stamp를 'time Stamp'로 변환하려면 해야 하나요?date바에에 계산 ?? ???

현재 코드는 다음과 같습니다.

public class GetCurrentDateTime {

    public int data() {
        int count = 0;
        java.sql.Timestamp timeStamp = new Timestamp(System.currentTimeMillis());
        java.sql.Date date = new java.sql.Date(timeStamp.getTime()); 
        System.out.println(date);
        //count++;

        try {
            Class.forName("com.mysql.jdbc.Driver");
            Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/pro", "root", "");

            PreparedStatement statement = con.prepareStatement("select * from orders where status='Q' AND date=CURDATE()");
            ResultSet result = statement.executeQuery();
            while (result.next()) {
                // Do something with the row returned.
                count++; //if the first col is a count.
            }
        } catch (Exception exc) {
            System.out.println(exc.getMessage());
        }

        return count;
    }
}

하다
여기에 이미지 설명 입력

여기서 얻은 출력은 2012-08-07 0이지만 동등한 쿼리는 3을 반환합니다.왜 0이 되지?

만들어 .DategetTime()이치노

다음은 예를 제시하겠습니다(현재 시각의 타임스탬프 예를 사용합니다).

Timestamp stamp = new Timestamp(System.currentTimeMillis());
Date date = new Date(stamp.getTime());
System.out.println(date);
// timestamp to Date
long timestamp = 5607059900000; //Example -> in ms
Date d = new Date(timestamp );

// Date to timestamp
long timestamp = d.getTime();

//If you want the current timestamp :
Calendar c = Calendar.getInstance();
long timestamp = c.getTimeInMillis();

그냥:

Timestamp timestamp = new Timestamp(long);
Date date = new Date(timestamp.getTime());

저는 오랫동안 이것을 찾고 있었습니다만, Eposh 컨버터가 간단하게 할 수 있는 것을 알 수 있었습니다.

long epoch = new java.text.SimpleDateFormat("MM/dd/yyyy HH:mm:ss").parse("01/01/1970 01:00:00").getTime() / 1000;

또는 그 반대입니다.

String date = new java.text.SimpleDateFormat("MM/dd/yyyy HH:mm:ss").format(new java.util.Date (epoch*1000));

dr;dr

LocalDate.now( ZoneId.of( "Africa/Tunis" ) )
    .atStartOfDay( ZoneId.of( "Africa/Tunis" ) )
    .toEpochSecond()

LocalDate.now( ZoneId.of( "Africa/Tunis" ) )
    .plusDays( 1 )
    .atStartOfDay( ZoneId.of( "Africa/Tunis" ) )
    .toEpochSecond()

"SELECT * FROM orders WHERE placed >= ? AND placed < ? ; "

myPreparedStatement.setObject( 1 , start )
myPreparedStatement.setObject( 2 , stop )

java.time

현재의 java.time 클래스로 대체되는 번거로운 오래된 날짜 시간 클래스를 사용하고 있습니다.

데이터베이스 내의 모멘트를 정수형 컬럼에 저장하고 있는 것 같습니다.대신 SQL과 같은 유형해야 합니다.TIMESTAMP WITH TIME ZONE그러나 이 답변을 위해 우리는 우리가 가진 것을 사용할 것입니다.

레코드가 밀리초의 분해능으로 순간을 나타내며 하루 종일 모든 레코드를 원하는 경우 시간 범위가 필요합니다.우리는 시작 순간과 정지 순간이 있어야 한다.쿼리에는 쌍을 가져야 하는 단일 날짜 기준만 있습니다.

클래스는 시간대 및 시간대가 없는 날짜 전용 값을 나타냅니다.

표준 시간대는 날짜를 결정하는 데 매우 중요합니다.날짜는 지역에 따라 전 세계적으로 다릅니다.예를 들어 프랑스 파리에서는 자정 몇 분 후가 새로운 날이고 몽트레알 퀘벡에서는 여전히 "어제"입니다.

시간대가 지정되지 않은 경우 JVM은 현재 기본 시간대를 암묵적으로 적용합니다.이 기본값은 언제든지 변경될 수 있으므로 결과가 달라질 수 있습니다.원하는/예상 시간대를 인수로 명시적으로 지정하는 것이 좋습니다.

다음 형식으로 적절한 시간대 이름을 지정합니다.continent/region, , , 등Pacific/Auckland EST ★★★★★★★★★★★★★★★★★」IST이는 진정한 표준 시간대가 아니며 표준화되지 않았으며 고유하지도 않기 때문입니다(!).

ZoneId z = ZoneId.of( "America/Montreal" ) ;  
LocalDate today = LocalDate.now( z ) ;

JVM의 현재 기본 시간대를 사용하려면 해당 시간대를 요청하고 인수로 전달합니다.생략하면 JVM의 현재 기본값이 암묵적으로 적용됩니다.JVM 내 앱의 스레드 중 어떤 코드로든 런타임 중 언제든지 기본값이 변경될 수 있으므로 명시적인 것이 좋습니다.

ZoneId z = ZoneId.systemDefault() ;  // Get JVM’s current default time zone.

또는 날짜를 지정하십시오.월은 숫자로 설정할 수 있습니다.숫자는 1 ~12 입니다.

LocalDate ld = LocalDate.of( 1986 , 2 , 23 ) ;  // Years use sane direct numbering (1986 means year 1986). Months use sane numbering, 1-12 for January-December.

또는 미리 정의된 열거형 개체를 1년 중 매월 하나씩 사용하는 것이 좋습니다.힌트: 사용방법Month단순한 정수가 아닌 코드 기반 전체에 걸쳐 객체를 배치하여 코드를 보다 자기 인식적으로 만들고, 유효한 값을 보장하며, 유형 안전을 제공합니다.

LocalDate ld = LocalDate.of( 1986 , Month.FEBRUARY , 23 ) ;

LocalDate그 다음 우리는 그것을 하루의 시작과 종료의 한 쌍으로 바꿀 필요가 있다.00:00:00-of-dayDaylight Saving Time(DST; 일광 절약 시간)등의 이상에 의해, 01:00:00 와 같은 다른 시각에 하루가 개시되는 일이 있습니다.그러면 java.time이 하루의 첫 번째 순간을 결정하도록 하겠습니다.ZoneId합니다.LocalDate::atStartOfDay그런 변칙적인 것들을 찾아보세요.결과는 입니다.

ZonedDateTime zdtStart = ld.atStartOfDay( z ) ;

일반적으로 시간 범위를 정의하는 가장 좋은 방법은 시작이 포함되고 끝이 배타적인 하프 오픈 방식입니다.그래서 하루는 첫 번째 순간부터 시작해서 다음 날의 첫 번째 순간까지 이어집니다.

ZonedDateTime zdtStop = ld.plusDays( 1 ).atStartOfDay( z ) ;  // Determine the following date, and ask for the first moment of that day.

명령어를 할 수 .BETWEEN완전 클로즈드)입니다[] 여기서 오픈(Half-Open입니다.[)의합니다.>= ★★★★★★★★★★★★★★★★★」<.

열의 이름이 잘못 지정되었습니다.다양한 데이터베이스에 예약되어 있는 천 개의 단어는 사용하지 마십시오.용용 let let let let let let 를 사용합시다placed를 참조해 주세요.

에는 「 」를 사용하고 있을 .?이치노

String sql = "SELECT * FROM orders WHERE placed >= ? AND placed < ? ; " ;

는 ★★★★★★★★★★★★★★★★★★★★★」ZonedDateTime위에서 설명한 것처럼 정수를 저장하는 반면, 현재 데이터베이스에는 정수가 저장되어 있습니다.컬럼을 올바르게 정의해 주었으면 간단하게 통과할 수 있었습니다.ZonedDateTimeJDBC 4.2는 JDBC를 지원합니다.

하지만 대신 전체 초 안에 Epoch의 카운트를 구해야 합니다.나는 너의 에폭 기준일이 1970년 UTC의 첫 순간이라고 가정할 것이다. 손실에 .「 」 「 」 「 」 「 」ZonedDateTime클래스는 나노초 분해능이 있습니다.소수점은 다음 행에서 잘립니다.

long start = zdtStart().toEpochSecond() ;  // Transform to a count of whole seconds since 1970-01-01T00:00:00Z.
long stop = zdtStop().toEpochSecond() ; 

이제 위에서 정의한 SQL 코드에 이러한 정수를 전달할 준비가 되었습니다.

PreparedStatement ps = con.prepareStatement( sql );
ps.setObject( 1 , start ) ;
ps.setObject( 2 , stop ) ;
ResultSet rs = ps.executeQuery();

에서 정수값을 취득하면 오브젝트(항상 UTC) 또는 오브젝트(시간대가 할당되어 있음)로 변환할 수 있습니다.

Instant instant = rs.getObject( … , Instant.class ) ;
ZonedDateTime zdt = instant.atZone( z ) ;

java.time 정보

java.time 프레임워크는 Java 8 이후에 포함되어 있습니다.이러한 클래스는 , 및 등 문제가 많은 오래된 레거시 날짜 시간 클래스를 대체합니다.

현재 유지보수 모드에 있는 조다 타임 프로젝트는 java.time 클래스로의 이행을 권장합니다.

자세한 내용은 Oracle 자습서를 참조하십시오.또한 Stack Overflow를 검색하여 많은 예와 설명을 확인하십시오.사양은 JSR 310입니다.

java.time 클래스는 어디서 얻을 수 있습니까?

  • 자바 SE 8, 자바 SE 9 이후
    • 붙박이.
    • 번들 구현이 포함된 표준 Java API의 일부입니다.
    • Java 9에는 몇 가지 사소한 기능과 수정 사항이 추가되어 있습니다.
  • 자바 SE 6 및 자바 SE 7
    • java.time 기능의 대부분은 ThreeTen 백포트의 Java 6 및7로 백포트됩니다.
  • 안드로이드
    • 최신 버전의 Android 번들 구현 java.time 클래스.
    • 이전의 Android에서는 쓰리텐ABP 프로젝트는 ThreeTen-Backport(상기)를 채택하고 있습니다.'쓰리텐ABP 사용방법'을 참조하십시오.

쓰리텐 엑스트라 프로젝트는 java.time을 추가 클래스로 확장합니다.이 프로젝트는 향후 java.time에 추가될 수 있는 가능성을 입증하는 기반입니다.여기에는 , , , 유용한 클래스가 있습니다.

다음 Java 코드를 사용해 보십시오.

Timestamp stamp = new Timestamp(System.currentTimeMillis());
Date date = new Date(stamp.getTime());
DateFormat f = new SimpleDateFormat("yyyy-MM-dd");
DateFormat f1 = new SimpleDateFormat("yyyy/MM/dd");
String d = f.format(date);
String d1 = f1.format(date);
System.out.println(d);
System.out.println(d1);

'아까', '아까', '아까', '아까', '아까', '아까', '', '의 장점을 잘 활용하지 못하고 있습니다.PreparedStatement 을이 좋습니다.PreparedStatement음음음같 뭇매하다

PreparedStatement statement = con.prepareStatement("select * from orders where status=? AND date=?")

ㄹ게요를 하시면 됩니다.statement.setXX(param_index, param_value)각 값을 설정합니다.환용으로 timestamp자바도크

PreparedStatement.setTimeStamp()
타임스탬프

이게 도움이 됐으면 좋겠네요!

Android에서는 매우 심플합니다.캘린더 클래스를 사용하여 current TimeMillis를 가져옵니다.

Timestamp stamp = new Timestamp(Calendar.getInstance().getTimeInMillis());
Date date = new Date(stamp.getTime());
Log.d("Current date Time is   "  +date.toString());

Java에서는 System.currentTimeMillis()를 사용하여 현재 타임스탬프를 가져옵니다.

하지 않지만,하세요.UNIX_TIMESTAMP()이치유효한 시간을 인수로 지정하거나 조건을 변경해야 합니다.

편집:

다음은 질문에 근거한 시간 제한 쿼리의 예입니다.

PreparedStatement statement = con
        .prepareStatement("select * from orders where status='Q' AND date > ?");
Date date = new SimpleDateFormat("dd/MM/yyyy").parse("01/01/2000");
statement.setDate(1, new java.sql.Date(date.getTime()));

EDIT: 타임스탬프 열

를 사용하는 , 「」를 사용합니다.java.sql.Timestamp PreparedStatement.setTimestamp()를 지정합니다.즉, 다음과 같습니다.

PreparedStatement statement = con
        .prepareStatement("select * from orders where status='Q' AND date > ?");
Date date = new SimpleDateFormat("dd/MM/yyyy").parse("01/01/2000");
Timestamp timestamp = new Timestamp(date.getTime());
statement.setTimestamp(1, timestamp);

new Date(timestamp.getTime()) 고급 8 way, 타임 사용할 수 있도록 는, 「Java 8 way(Java 8 way)(Java 8 way(Java 8 way(Java 8 way(Java 8 way), 「Java 8 way(Java 8 way), 「Java 8 way」를 호출하는 것입니다.Date.from(timestamp.toInstant()).

.Timestamp Date; 다른 답변의 코멘트에서 설명을 참조해 주세요.

    Timestamp tsp = new Timestamp(System.currentTimeMillis());
   java.util.Date dateformat = new java.util.Date(tsp.getTime());

다른 답변은 실제 어플리케이션으로는 감당할 수 없는 시간대에 구애받지 않는 것 같기 때문에 답변할 의무가 있습니다.타임스탬프와 JVM이 다른 시간대를 사용하고 있을 때 타임스탬프를 날짜로 변환하려면 다음과 같이 Joda Time의 LocalDateTime(또는 Java8의 LocalDateTime)을 사용합니다.

Timestamp timestamp = resultSet.getTimestamp("time_column");
LocalDateTime localDateTime = new LocalDateTime(timestamp);
Date trueDate = localDateTime.toDate(DateTimeZone.UTC.toTimeZone());

다음의 예에서는, 타임스탬프가 UTC(통상은 데이타베이스의 경우와 같이)인 것을 전제로 하고 있습니다.합니다.toDate★★★★★★ 。

존재하는 assuming고고고고고고고고고고고고고고고고 가 있다고 가정합니다.java.util.Date date:

Timestamp timestamp = new Timestamp(long);
date.setTime( l_timestamp.getTime() );

이 방법을 사용하면 특정 영역의 타임스탬프 및 타임존에서 날짜를 가져올 수 있습니다.

public String getDayOfTimestamp(long yourLinuxTimestamp, String timeZone) {
    Calendar cal = Calendar.getInstance();
    cal.setTimeInMillis(yourLinuxTimestamp * 1000);
    cal.setTimeZone(TimeZone.getTimeZone(timeZone));
    Date date = cal.getTime();
}
String timestamp="";
Date temp=null;
try {
    temp = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(getDateCurrentTimeZone(Long.parseLong(timestamp)));
} catch (ParseException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
int dayMonth=temp.getDate();
int dayWeek=temp.getDay();
int hour=temp.getHours();
int minute=temp.getMinutes();
int month=temp.getMonth()+1;
int year=temp.getYear()+1900;

Date updated = timestamp.toDate();

DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
Date fecha = getDateInTimestamp(); 

언급URL : https://stackoverflow.com/questions/11839246/how-to-convert-timestamp-to-date-in-java

반응형