2015-08-12 7 views
1

мое приложение принимает строку типа «2002-10-15 10: 55: 01.000000». Мне нужно проверить внутри скрипта scala, что строка действительна для метки времени db2.Как проверить отметку времени в scala?

+1

Вы, вероятно, хотите взглянуть на [этот вопрос] (http://stackoverflow.com/q/7628103/3801695). –

ответ

5

В общем (я думаю) вы могли бы сделать это moslty точно так же, как и в Java либо с java.text.DateFormat или joda.time.DateTimeFormat (см. Joda time).

Простой пример:

import java.text.SimpleDateFormat 
import java.util.Date 

import scala.util.Try 

val date = "2002-10-15 10:55:01.000000" 
val formatter = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSSS") 

val test = Try[Date](formatter.parse(date)) 

даст вам:

test: scala.util.Try[java.util.Date] = Success(Tue Oct 15 10:55:01 CEST 2002) 

Тогда вы могли бы соответствовать:

test match { 
    case Success(date) => // ok 
    case Failure(exception) => // not ok 
} 
+0

эй, можем ли мы получить только такой статус, как «Успех» или «Сбой» из приведенного выше результата, я попробовал test.take (7), чтобы получить статус только, но его высказывание test.scala: 13: error: value take не является членом of scala.util.Try [java.util.Dat e] if (test.take (7) == "Success") ^ обнаружена одна ошибка – yash

+0

Попробуйте работать как обычный 'try-catch-block' завернутый в нечто вроде «Option» или, скорее, «Либо». Таким образом, результатом 'Try.apply [Date]' является либо «Успех (дата: дата)», либо «Ошибка (ex: _ <: Throwable)». Вы можете проверить, была ли успешна «Try» с помощью 'test.isSuccess' или' test.isFailure'. Однако с 'match' вы также можете заглянуть внутрь' Success', чтобы получить фактическую синтаксическую 'Date'. –

0

Вы должны использовать SimpleDateFormat Явы, чтобы сделать это в Скале:

object DateParser { 
     def isValid(f : String, d : String) = { 
     try { 
      val format = new java.text.SimpleDateFormat(f) 
      format.parse(d) 
     }catch(java.text.ParseException e) { 
      false 
     } 
     } 
     def main(args : Array[String]) { 
     val format = "yyyy-MM-dd k:m:s" 
     println(isValid(format,"2002-10-15 10:55:01.000000")) 
     println(isValid(format,"2002-10-1510:55:01.000000")) 
     } 
    } 
Смежные вопросы